如何防止 SQL multiple-join-rows 错误并为多行应用值?
How to prevent SQL multiple-join-rows error and apply values for multiple rows?
ERROR [HY000] ERROR: Update canceled: attempt to update a target row
with values from multiple join rows
有没有办法避免这个错误并更新包含 E 的每一行,尽管有多个连接行?
UPDATE V
SET
V.S = M.S,
V.T = M.T,
V.U = M.U
FROM MAP M
WHERE AND V.E = M.E;
您需要为每个 E
获取一个值。我很想使用 row_number()
:
UPDATE V
SET V.S = M.S,
V.T = M.T,
V.U = M.U
FROM (SELECT M.*, ROW_NUMBER() OVER (PARTITION BY E ORDER BY E) as seqnum
FROM MAP M
) M
WHERE V.E = M.E AND seqnum = 1;
但是,您可能有其他逻辑来从 MAP
中选择要用于更新的特定值。
ERROR [HY000] ERROR: Update canceled: attempt to update a target row with values from multiple join rows
有没有办法避免这个错误并更新包含 E 的每一行,尽管有多个连接行?
UPDATE V
SET
V.S = M.S,
V.T = M.T,
V.U = M.U
FROM MAP M
WHERE AND V.E = M.E;
您需要为每个 E
获取一个值。我很想使用 row_number()
:
UPDATE V
SET V.S = M.S,
V.T = M.T,
V.U = M.U
FROM (SELECT M.*, ROW_NUMBER() OVER (PARTITION BY E ORDER BY E) as seqnum
FROM MAP M
) M
WHERE V.E = M.E AND seqnum = 1;
但是,您可能有其他逻辑来从 MAP
中选择要用于更新的特定值。