DataBase/Oracle
[Oracle] MySQL과 Oracle 테이블 JOIN 걸어서 UPDATE하는 방법
희랍인 조르바
2018. 9. 23. 16:23
MySQL은 쿼리 짜기가 Oracle에 비해서 문법이 자유로운 편인 것 같다.
MySQL에서는 테이블 join을 걸어서 update를 하는 방법이 참 쉬워보이는데, Oracle은 요래조래 칠게 많았다 ㅠ_ㅠ
두 DB를 비교하면서 설명해보겠다.
먼저, MySQL.
1 2 3 4 5 6 7 8 9 | /*MYSQL에서 JOIN된 테이블 UPDATE */ UPDATE chocolate_table chocolate INNER JOIN milk_table milk -- 조인할 테이블 ON chocolate.common_seq = milk.common_seq SET chocolate.brand_name = 'delicious choco' WHERE chocolate.company_name = 'zorba' AND milk.expire_date >= date_format('2018-09-20', '%Y-%m-%d') | cs |
직관적이랄까. 딱 JOIN 걸고, WHERE절 걸면 업데이트 되니까 쉽다.
다음으로 Oracle,
1 2 3 4 5 6 7 8 9 10 11 12 13 | /*ORACLE에서 JOIN된 테이블 UPDATE */ MERGE INTO chocolate_table chocolate USING( SELECT a.common_seq -- using쪽에서 join 조건을 모두 걸어주기. 그리고 pk로 걸 컬럼들 select FROM chocolate_table a INNER JOIN milk_table b ON a.common_seq = b.common_seq WHERE a.company_name = 'zorba' AND b.expire_date >= TO_DATE('2018-09-20', 'YYYY-MM-DD') ) JOINED_TABLE ON (chocolate.common_seq = JOINED_TABLE.common_seq) WHEN MATCHED THEN UPDATE SET chocolate.brand_name = 'delicious choco' | cs |
MERGE INTO를 사용한다. USING 부분에서 JOIN할 조건 식을 SELECT문으로 구현하고, UPDATE하려는 테이블에 맞는 조건이 되도록 SELECT부분에서 컬럼을 조회한다.
조건을 걸기 위한 컬럼들을 ON을 통해 조건식을 맞춰주고 UPDATE를 해주면 된다.
익숙하면 Oracle도 어렵지는 않겠지만, MySQL에 비해서는 어려운 건 확실해 보인다.