MYSQL 테이블 JOIN 걸어서 UPDATE 방법

SQL에서 JOIN은 두 개 이상의 관계형 데이터베이스 테이블을 연결하는 데 사용됩니다. 이를 통해 서로 다른 테이블 간에 관계를 설정하고 테이블의 데이터를 함께 쿼리 할 수 있습니다. 예를 들어, A 테이블에 있는 값을 B 테이블에 update 할 수 있습니다. 잘 생각해 보면 특정 컬럼에는 여러 값들이 존재할 텐데, A 테이블 컬럼의 어떤 값을 B 테이블에 반영할까요? 그 기준을 JOIN으로 정할 수 있습니다.

JOIN

JOIN도 종류가 여러 가지이지만 이 글에선 가장 기본인 join에 대해 알아보겠습니다. JOIN은 INNER JOIN과 같은 의미입니다.

 

구문

UPDATE 테이블1
JOIN 테이블2 ON table1.컬럼 = table2.컬럼
SET 테이블1.컬럼 = 테이블2.컬럼;

예시 1)

books와 authors 테이블이 있습니다. 두 테이블을 보시면 author_id라는 컬럼을 공통적으로 갖고 있는 게 확인됩니다. 이 컬럼으로 join 할 수 있습니다.

 

books

 

authors

 

예를 들어, 1900년 이전 태어난 작가들의 책 제목은 모두 대문자로 변경하려면 아래와 같은 구문을 사용할 수 있습니다.

UPDATE books
JOIN authors ON books.author_id = authors.author_id
SET books.title = UPPER(books.title)
WHERE authors.birth_year < 1900;

 

join 예시
책 제목이 대문자로 변경됐다.

 

예시 2)

이 예시는 조금 형식적이라서, 이런 업데이트 구문을 왜 쓰는건지 이해가 안 되실 수도 있습니다. 그래도 테이블을 조인해서 업데이트를 하는 원리는 볼 수 있으니 참고하시기 바랍니다.

 

table1과 table2가 있습니다. 두 테이블은 id라는 컬럼을 공통적으로 가지고 있습니다. 

 

테이블1

 

테이블2

 

table1에 있는 name 컬럼을 table2에 있는 city 컬럼 값으로 모두 update 해보겠습니다.

UPDATE table1
JOIN table2 ON table1.id = table2.id
SET table1.name = table2.city;

 

예시2

 

정상적으로 업데이트 됐습니다. 

반응형

댓글

Designed by JB FACTORY