我的程序中有以下变量:
DECLARE @Items TABLE (ItemId UNIQUEIDENTIFIER,
OldItemId UNIQUEIDENTIFIER)
我用数据填充它:
INSERT @Items (ItemId, OldItemId)
SELECT NEWID(), t1.ItemId
FROM UsersItems t1
WHERE t1.IsActual = 1
我还有一个ItemsToUsers表,其中包含以下数据:
CREATE TABLE ItemsToUsers
(
ItemId UNIQUEIDENTIFIER NOT NULL,
UserId UNIQUEIDENTIFIER NOT NULL,
CONSTRAINT PK_ItemsToUsers PRIMARY KEY(ItemId, UserId)
)
我需要用@Items where ItemsToUsers中的ItemId替换ItemsToUsers表中的所有ItemId。项目 ID = @Items。OldItemId。
我不太明白该怎么做。我这样做,但它不正确:
UPDATE ItemsToUsers
SET ItemId = @Items.ItemId
WHERE ItemId = @Items.OldItemId
我知道您需要提出一个条件,例如:
UPDATE ItemsToUsers
SET ItemId = (SELECT t2.ItemId
FROM ItemsToUsers t1
JOIN @Items t2 ON t1.ItemId = t2.OldItemId)
WHERE ItemId = @Items.OldItemId
如何正确编曲?
您的最新版本几乎包含您需要的所有内容,只需要稍作修改: