DB 또는 시스템 작업을 하다보면 여러건에 대해 한번에 업데이트를 하는 경우가 많다. 뭐 그렇다치고 이번에는 MySQL 에서 서브쿼리를 이용하는 방법을 알아보자.


이번에 할 작업은 A_Table의 a_column의 데이터와 문자열을 합친 후, A_Table의 b_column에 업데이트를 해줄 일이 생겼다. 오라클과 다르게 한차례 더 가공을 해야 해서 손이 가는 편이지만 크게 어렵지는 않았다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
UPDATE 
    'A_Table' AS AliasA 
SET 
    AliasA.b_column = 
    (
    SELECT
        AliasC.a_column_text
    FROM
        (
        SELECT
            AliasB.a_column 
            , CONCAT('TEST_' , AliasB.a_column ) AS a_column_text //MySQL에서 문자열 합치기는 concat을 이용함
        FROM
            'A_Table' AS AliasB 
        ) AS AliasC
    WHERE 
        AliasC.a_column = AliasA.a_column 
    )  
WHERE 
    AliasA.b_column IS NULL;
cs


오라클 같은 경우에는 SET 구문에서 서브쿼리를 바로 날리면 되지만, MySQL의 경우에는 SELECT 구문에 서브쿼리를 한 번 더 감싸줘야 한다.

이로써 A_Table의 b_column에 'TEST_'문자열이 합쳐진 a_column값이 update 되게 된다.

블로그 이미지

김생선

세상의 모든것을 어장관리

,