3
我想是這樣的,但id的值沒有變化,得到第一記錄的值和所有其餘的值設置爲表2 ...我想插入從表1的值與incremantal值
insert into table1 (Id,b,c,d)
(select (select max(Id)+1 from table1),x,y,z from table2 where...)
我想是這樣的,但id的值沒有變化,得到第一記錄的值和所有其餘的值設置爲表2 ...我想插入從表1的值與incremantal值
insert into table1 (Id,b,c,d)
(select (select max(Id)+1 from table1),x,y,z from table2 where...)
使用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 ...
謝謝..那工作 – adnanturken 2010-04-29 16:45:16
您正在使用哪種數據庫產品? SQL Server?甲骨文?還有別的嗎? – 2010-04-29 16:33:03
即時通訊使用mssql 2005這一個。 – adnanturken 2010-04-29 16:36:48
你知道這不會是併發安全的(沒有鎖定table1),是嗎? – 2010-04-29 16:37:47