B表有字段:id,col1,col2,col3....(ID列为INT型,且不是自增列,且不能为空,且不能重复)
现在要将对A表的查询结果插入到B表中。
INSERT INTO B SELECT id,col1,col2,col3.... FROM A Where ....
但这个语句怎么处里B表那个ID列
3 个解决方案
#1
select identity(int,1,1),col1,... into # from A where
INSERT INTO B SELECT * FROM #
#2
如果A表中有递增或者递减列,
数据量不是很大的话,
可以使用,
如果是2005的话,
使用ROW_NUMBER(),
这个就不写了,
留给楼下的 :)
数据量不是很大的话,
可以使用,
insert into B select id=(select count(1) from A where col <= t.col ) ,* from A t
如果是2005的话,
使用ROW_NUMBER(),
这个就不写了,
留给楼下的 :)
#3
只是说id是int型,且不能为空和重复,没说生成的规则,无法给出你解决方法。
如果表B中原无记录可以按和尚的作,如果表中已有记录,那样做就会有重复的ID
#1
select identity(int,1,1),col1,... into # from A where
INSERT INTO B SELECT * FROM #
#2
如果A表中有递增或者递减列,
数据量不是很大的话,
可以使用,
如果是2005的话,
使用ROW_NUMBER(),
这个就不写了,
留给楼下的 :)
数据量不是很大的话,
可以使用,
insert into B select id=(select count(1) from A where col <= t.col ) ,* from A t
如果是2005的话,
使用ROW_NUMBER(),
这个就不写了,
留给楼下的 :)
#3
只是说id是int型,且不能为空和重复,没说生成的规则,无法给出你解决方法。
如果表B中原无记录可以按和尚的作,如果表中已有记录,那样做就会有重复的ID