私は質問をして、助けたこの返事を得ました。
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
答えは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]
同じ結果を得るための代替方法 は、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
以下は、JOIN
とWHERE
bothを含むUpdateクエリです。私たちが複数の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')
ブラストされた「回答へのコメント」は、まだ終わっていなくても、編集全体を投稿することなく改行を取らないため、私は独立した回答として追加している代替の一般計画。
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;
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;