日期:2014-05-18  浏览次数:20535 次

求一个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