有没有办法在ID
语句中增加具有主键的INSERT INTO SELECT
字段?
我想要做的是获取表的最后ID
并为ID
语句生成的每条新记录插入递增的INSERT INTO SELECT
?
答案 0 :(得分:2)
你可以这样做:
DECLARE @lastId int = 0
SELECT @lastId = MAX(Id) From YourTable
INSERT INTO YourTable (Id, Data)
SELECT (ROW_NUMBER() OVER (ORDER BY (SELECT 0))) + @lastId, at.Data
FROM AnotherTable at
请务必将其添加到交易范围内。
SqlFiddle:http://www.sqlfiddle.com/#!3/d23642/5
无论如何,我强烈建议您使用IDENTITY列以避免碰撞。
答案 1 :(得分:0)
可能获得最大ID,然后在每个Insert上增加一个
INSERT MAX(ID)+1
答案 2 :(得分:0)
我认为这就是你要找的东西。我们假设PK是一个INT用于演示目的。
--Get the last/greatest PK value in first table.
DECLARE @LastPKValue INT
SELECT @LastPKValue = MAX(PKCol)
FROM [schema].[YourTable]
INSERT INTO [schema].[YourTable] (PKCol, ColA, ColB, ColC)
SELECT
ROW_NUMBER() OVER( ORDER BY sot.[SomeColumnName]) + @LastPKValue,
OtherColumnA,
OtherColumnB,
OtherColumnC
FROM [schema].[SomeOtherTable] sot