MERGE INTO ... USING ... ON ... WHEN MATCHED THEN ... WHEN NOT MATCHED THEN ... 보통 테이블에 이미 존재하는 KEY가 있으면 UPDATE하고 없으면 INSERT하고싶을때 사용한다 USING 구절에 참조 테이블이나 dual을 써도되고 아래와 같이 서브쿼리를 사용해도 된다 MERGE INTO 테이블 a USING ( SELECT 컬럼1 FROM 서브테이블 ) b ON ( a.컬럼1 = b.컬럼1 ) WHEN MATCHED THEN UPDATE SET a.컬럼2 = b.컬럼2, ... WHEN NOT MATCHED THEN INSERT (a.컬럼2, ...) VALUES (b.컬럼2, ...);
RDBMS/Oracle & Tibero
시간 컬럼에 TRUNC든, TO_CHAR든 형변환을 적게할것 예를들어 SELECT * FROM 테이블 WHERE TRUNC(날짜, 'HH24') = TO_DATE('2024032218', 'YYYYMMDDHH24') SELECT * FROM 테이블 WHERE 날짜 >= TO_DATE('2024032218', 'YYYYMMDDHH24') AND 날짜 < TO_DATE('2024032218', 'YYYYMMDDHH24') + 1/24 위와 아래 코드는 결과가 같으나 아래 코드 성능이 훨씬 좋다