UPDATE TABLE1 set TABLE1.col1 = TABLE2.col1
FROM TABLE2 INNER JOIN TABLE3 ON COL2 = TABLE2.COL2
WHERE TABLE1.COL3 = TABLE3.COL3
如果JOIN
每个条件返回多行,上述查询是否有效?我无法更新,尽管可以单独Join
Table3
和Table2
。
请帮忙。我希望这些信息足够。
答案 0 :(得分:3)
如果有多行,则将使用任意行进行更新。不会给出任何错误。 您可以强制要求changing the UPDATE to a MERGE
的连接返回一行答案 1 :(得分:2)
当您使用SQL Server 2005 MERGE
时,您无法使用。
要获得确定性结果,您需要一个相关的子查询。
UPDATE TABLE1
SET TABLE1.col1 = ISNULL((SELECT TOP (1) TABLE2.col1
FROM TABLE2
INNER JOIN TABLE3
ON TABLE3.COL2 = TABLE2.COL2
WHERE TABLE1.COL3 = TABLE3.COL3
ORDER BY TABLE2.col1), TABLE1.col1)
答案 2 :(得分:1)
不,你必须从Table2中只选择一行 - sql server将从Table2中选择任何合适的行。