我尝试了类似这样的东西,但是id值没有改变,得到第一条记录的值并设置所有其余值......
insert into table1 (Id,b,c,d)
(select (select max(Id)+1 from table1),x,y,z from table2 where... )
答案 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 ...