从选择多个表更新集查询

时间:2018-08-01 10:37:34

标签: sql postgresql sql-update

我有2个表,例如table1和table2。 table1具有列:id,status_new。 table2具有列:id,状态。例如,table1有1条记录,而table2有3条记录,如果我基于id加入这两个表,则该记录只有一条,但是如果我查询:

UPDATE epolicy.table2
SET status = 'COMPLETED'
FROM epolicy.table2 t2, epolicy.table1 t1
WHERE t1.status_new = 'Bounce' and t2.status = '' and t1.id = t2.id;

更新为“ COMPLETED”的记录为3行(表2中的所有记录)。为什么?因为加入表后,匹配记录仅1(基于ID)。供您参考,我使用的是postgresql。

谢谢。

1 个答案:

答案 0 :(得分:1)

不要重复在FROM中更新的表:

UPDATE epolicy.table2 t2
    SET status = 'COMPLETED'
    FROM epolicy.table1 t1
    WHERE t1.status_new = 'Bounce' AND
          t2.status = '' AND
          t1.id = t2.id;

第二个引用导致cross join,这不是您想要的。