Как сделать 3 таблицы JOIN в запросе UPDATE?

Я задал вопрос и получил этот ответ, который помог.

   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

Мой вопрос в основном... возможно ли это сделать 3 таблицы join в инструкции UPDATE? и для чего это правильный синтаксис? Спасибо. Я делаю...

 JOIN tableB, tableA
 JOIN tableB JOIN tableA

Ответы

Ответ 1

ответ 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

EDIT:

Для общего обновления:

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

Ответ 2

Альтернативный способ достичь того же результата - не использовать ключевое слово 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

Ответ 3

Ниже представлен запрос обновления, который включает в себя 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')

Ответ 4

Альтернативный общий план, который я добавляю только как независимый ответ, потому что взорванный "комментарий к ответу" не будет принимать новые строки без публикации всего редактирования, даже если он еще не закончен.

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;