如何防止 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 中选择要用于更新的特定值。