首页 文章

如何在UPDATE查询中执行3个表JOIN?

提问于
浏览
424

我问了一个问题并得到了这个答复 .

UPDATE TABLE_A a JOIN TABLE_B b 
   ON a.join_col = b.join_col AND a.column_a = b.column_b 
   SET a.column_c = a.column_c + 1

现在我想要这样做,如果有3个表涉及这样的事情 .

UPDATE tableC c JOIN tableB b JOIN tableA a

我的问题基本上是......这可以在 UPDATE 语句中进行3表连接吗?它的正确语法是什么?谢谢 . 我做的......

JOIN tableB, tableA
 JOIN tableB JOIN tableA

5 回答

  • 2

    答案是 yes 你可以

    试试吧

    UPDATE TABLE_A a 
        JOIN TABLE_B b ON a.join_col = b.join_col AND a.column_a = b.column_b 
        JOIN TABLE_C c ON [condition]
    SET a.column_c = a.column_c + 1
    

    编辑:

    对于一般更新加入:

    UPDATE TABLEA a 
       JOIN TABLEB b ON a.join_colA = b.join_colB  
       SET a.columnToUpdate = [something]
    
  • 39

    achieving same result的替代方法是不要使用 JOIN 关键字 .

    UPDATE TABLE_A, TABLE_B
    SET TABLE_A.column_c = TABLE_B.column_c + 1
    WHERE TABLE_A.join_col = TABLE_B.join_col
    
  • 5

    以下是更新查询,其中包括 JOINWHERE . 同样我们可以使用多个join / where子句,希望它能帮到你: -

    UPDATE opportunities_cstm oc JOIN opportunities o ON oc.id_c = o.id
     SET oc.forecast_stage_c = 'APX'
     WHERE o.deleted = 0
       AND o.sales_stage IN('ABC','PQR','XYZ')
    
  • 0

    一个替代的总体规划,我只是作为一个独立的答案添加,因为爆炸的“答案评论”不会在不发布整个编辑的情况下采用换行符,即使它还没有完成 .

    UPDATE table A
    JOIN table B ON {join fields}
    JOIN table C ON {join fields}
    JOIN {as many tables as you need}
    SET A.column = {expression}
    

    例:

    UPDATE person P
    JOIN address A ON P.home_address_id = A.id
    JOIN city C ON A.city_id = C.id
    SET P.home_zip = C.zipcode;
    
  • 733

    对于PostgreSQL示例:

    UPDATE TableA AS a
    SET param_from_table_a=FALSE -- param FROM TableA
    FROM TableB AS b
    WHERE b.id=a.param_id AND a.amount <> 0;
    

相关问题