如何防止SQL多连接行错误并为多行应用值?

时间:2016-04-26 13:42:39

标签: sql sql-update netezza multiple-join-rows

  

错误[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;

1 个答案:

答案 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中的特定值。