[mysql] 업데이트 쿼리에서 3 테이블 조인을 수행하는 방법은 무엇입니까?

나는 질문을하고 도움이 회신을 받았습니다.

   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모두 를 포함하는 업데이트 쿼리입니다 . 여러 조인 / 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; 


답변