-
[Oracle] MySQL과 Oracle 테이블 JOIN 걸어서 UPDATE하는 방법DataBase/Oracle 2018. 9. 23. 16:23
MySQL은 쿼리 짜기가 Oracle에 비해서 문법이 자유로운 편인 것 같다.
MySQL에서는 테이블 join을 걸어서 update를 하는 방법이 참 쉬워보이는데, Oracle은 요래조래 칠게 많았다 ㅠ_ㅠ
두 DB를 비교하면서 설명해보겠다.
먼저, MySQL.
123456789/*MYSQL에서 JOIN된 테이블 UPDATE */UPDATE chocolate_table chocolateINNER JOIN milk_table milk -- 조인할 테이블ON chocolate.common_seq = milk.common_seqSET 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,
12345678910111213/*ORACLE에서 JOIN된 테이블 UPDATE */MERGE INTO chocolate_table chocolateUSING( SELECT a.common_seq -- using쪽에서 join 조건을 모두 걸어주기. 그리고 pk로 걸 컬럼들 selectFROM chocolate_table aINNER JOIN milk_table bON a.common_seq = b.common_seqWHERE a.company_name = 'zorba'AND b.expire_date >= TO_DATE('2018-09-20', 'YYYY-MM-DD')) JOINED_TABLEON (chocolate.common_seq = JOINED_TABLE.common_seq)WHEN MATCHED THEN UPDATESET chocolate.brand_name = 'delicious choco'cs MERGE INTO를 사용한다. USING 부분에서 JOIN할 조건 식을 SELECT문으로 구현하고, UPDATE하려는 테이블에 맞는 조건이 되도록 SELECT부분에서 컬럼을 조회한다.
조건을 걸기 위한 컬럼들을 ON을 통해 조건식을 맞춰주고 UPDATE를 해주면 된다.
익숙하면 Oracle도 어렵지는 않겠지만, MySQL에 비해서는 어려운 건 확실해 보인다.
'DataBase > Oracle' 카테고리의 다른 글
[Oracle] mysql 기능인 ON UPDATE CURRENT_TIMESTAMP를 oracle에서 구현하기 (0) 2018.10.02 [Oracle] VARCHAR2(10) 과 VARCHAR2(10 CHAR)의 차이점 (0) 2018.10.02 [Oracle] SQL문으로 중복 데이터 삭제하기 (0) 2018.09.21 ORA-00932: 일관성 없는 데이터 유형: -이(가) 필요하지만 CLOB임 - 에러 해결 (0) 2018.09.13 [oracle] 오라클에서 System.out.print()?! 프린트 하는 법 (0) 2018.09.04