表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