首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql~

2012-02-15 
求一个sql~~~~~~~~表tab字段有:idfidname11aa22bb其中id是个自动增加的字段,fid不是自增字段,但是值与id相

求一个sql~~~~~~~~
表tab字段有:
id       fid       name
1         1           aa
2         2           bb
其中id是个自动增加的字段,fid不是自增字段,但是值与id相同.现在从表tab中取name= 'aa '的记录回插入表tab中,结果如下:
id       fid       name
1         1           aa
2         2           bb
3         3           aa

insert   into   tab(fid,name)
select   ?,name   from   tab   where   name= 'aa ';
fid的值怎么取?此时fid应该是id的最大值增1.

[解决办法]
--如果确保没有删除过记录。可以如下写:
insert into tab(fid,name)
select fid = (select max(fid) + 1 from tab) , name from tab where name= 'aa '
[解决办法]
insert tab(fid, name) select fid=ident_current( 'tab ')+1, name from tab where name= 'aa '
[解决办法]
楼兄的方法非常好。

使用ident_current函数。
[解决办法]
乌龟的方法也有错啊。
分两步就可以解决了。

insert into tab(fid,name)
select 0,name from tab where name= 'aa '

update tab
set fid=id where fid=0


热点排行