Home

[MySql] 다른 테이블의 데이터로 타겟 테이블 로우 업데이트 하기

목차

원인

사내에서 작업을 하면서 기존 테이블에 새로운 컬럼을 추가하였는데, 해당 컬럼에 기본값으로 다른 테이블에 있는 정보로 업데이트를 해야할 일이 생겼다.

그냥 Default 값 넣어주고 사업팀에 일일이 변경해주세요 라고 말해도 됬었으나.. 그러면 불편하실거 같아서 일단 유사한 데이터를 넣어드린다고 말씀 드렸다.

작업을 하기전에 이 작업을 위해 간단하게 스크립트를 짜서 row 별로 업데이트를 해줘야 하나라고 고민을 했었는데 검색해보니 간단한 쿼리로 이를 해결할 수 있었다.

일단 간단히 정리하면 다음과 같은 상황이었다.

-- TABLE_A
-- 기존 테이브에 새로운 컬럼이 추가되었고 default로 null이 들어가 있는 상태
+------------+-------------+
| id         | new_column  |
+------------+-------------+
|          1 |        null |
|          2 |        null |
|          3 |        null |
+------------+-------------+

-- TABLE_B
-- country 필드를 A 테이블에 id에 맞춰서 new_colum으로 넣어주면 되었다.
+------------+-------------+
| id         | country     |
+------------+-------------+
|          1 |          KR |
|          2 |          VN |
|          3 |          US |
+------------+-------------+

방법

UPDATE TABLE_A a, TABLE_B b
SET a.new_column = b.country
WHERE a.id = b.id;

-- 구문 정리
-- UPDATE [테이블A] a, [테이블B] b
-- SET a.컬럼1 = b.컬럼1
-- WHERE a.컬럼2 = b.컬럼2

결론

  • 생각해보면 되게 간단한 쿼리인데 이런 사용법도 있다는 것을 처음 깨달았다. 만약 스크립트로 작성했다면 30초면 될 작업을 30분을 사용할 뻔 하였다. 너무 간단하다보니 기초적인거라 생각되서 약간 부끄럽기도 하다.
  • 여튼 기억해놨다가 비슷한 작업을 할때 자주 써먹을 수 있을 것 같다.
Loading script...