【问题标题】:Update set query from select multiple table从选择多个表中更新集查询
【发布时间】:2023-03-27 10:30:01
【问题描述】:

我有 2 个表,例如 table1 和 table2。 table1 有列:id、status_new。 table2 有列:id,status。例如,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。

谢谢。

【问题讨论】:

    标签: sql postgresql sql-update


    【解决方案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,这不是您想要的。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      • 2017-01-13
      • 2013-11-15
      相关资源
      最近更新 更多