Adn*_*KEN 3 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... )
Run Code Online (Sandbox Code Playgroud)
使用标识列.然后你可以这样做:
INSERT INTO table1 (b, c, d)
SELECT x, y, z
FROM table2
WHERE ...
Run Code Online (Sandbox Code Playgroud)
如果您不想使用自动增量列,则可以通过添加行的行号而不是始终添加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 ...
Run Code Online (Sandbox Code Playgroud)