我有一张BaseProducts
表。我想从同一个表的另一行更新一行。这是我尝试但不工作意味着没有更新,
UPDATE DP
SET
DP.[Description] = SP.[Description]
................................
................................
................................
,[LastModificationDateUtc] = GETUTCDATE()
FROM
[dbo].[BaseProducts] DP
INNER JOIN
[dbo].[BaseProducts] SP ON DP.Id = SP.Id
WHERE
SP.Id = @SourceBaseProductId
AND DP.Id = @DestinationBaseProductId;
我有SourceBaseProductId
和DestinationBaseProductId
。
答案 0 :(得分:2)
不需要内连接。这将有效。
UPDATE DP
SET DP.[Description] = SP.[Description]
FROM [dbo].[BaseProducts] DP
,[dbo].[BaseProducts] SP
WHERE
SP.Id = @SourceBaseProductId
AND DP.Id = @DestinationBaseProductId;
答案 1 :(得分:1)
根据我的理解,您并不意味着使用inner join
,而是cross join
:
UPDATE DP
SET
DP.[Description] = SP.[Description]
................................
................................
................................
,[LastModificationDateUtc] = GETUTCDATE()
FROM
[dbo].[BaseProducts] DP
CROSS JOIN
[dbo].[BaseProducts] SP
WHERE
SP.Id = @SourceBaseProductId
AND DP.Id = @DestinationBaseProductId;
在这种情况下,您可以在where子句中提供不同的源和目标ID。
答案 2 :(得分:0)
看来你真正想做的就是:
UPDATE BaseProducts
SET Description =
(
SELECT Description
FROM BaseProducts
WHERE ID = @SourceBaseProductId
)
WHERE ID = @DestinationBaseProductId;
只是一个简单的更新,您可以在其中检索要设置的值。根本不需要加入。