我想用增量值从table1到table2插入值

时间:2010-04-29 16:29:48

标签: sql sql-server-2005

我尝试了类似这样的东西,但是id值没有改变,得到第一条记录的值并设置所有其余值......

insert into table1 (Id,b,c,d) 
 (select (select max(Id)+1 from table1),x,y,z from table2 where... )

1 个答案:

答案 0 :(得分:6)

使用identity column。然后你可以这样做:

INSERT INTO table1 (b, c, d) 
SELECT x, y, z
FROM table2
WHERE ...

如果您不想使用自动增量列,则可以通过添加行的行号而不是始终添加1来获得相同的效果。此语法几乎适用于所有主流SQL数据库(不是MySQL) ):

INSERT INTO table1 (Id, b, c, d) 
SELECT 
    (SELECT MAX(Id) FROM table1) + ROW_NUMBER() OVER (ORDER BY x),
    x, y, z
FROM table2
WHERE ...