我问了一个问题并得到了回复,这有帮助。
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
答案 0 :(得分:762)
答案是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]
答案 1 :(得分: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
答案 2 :(得分:7)
以下是更新查询,其中包含JOIN
& WHERE
两者。同样我们可以使用多个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')
答案 3 :(得分:2)
另一个总体规划,我只是作为一个独立的答案添加,因为爆炸的“答案评论”不会在不发布整个编辑的情况下采用换行符,即使它还没有完成。
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;
答案 4 :(得分:1)
是的,您可以对更新语句进行3表联接。这是一个示例:
UPDATE customer_table c
JOIN
employee_table e
ON c.city_id = e.city_id
JOIN
anyother_ table a
ON a.someID = e.someID
SET c.active = "Yes"
WHERE c.city = "New york";
答案 5 :(得分:0)
对于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;