错误[HY000]错误:更新已取消:尝试更新目标行 使用来自多个连接行的值
有没有办法避免此错误并更新包含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;
答案 0 :(得分:1)
您需要为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
中的特定值。