반응형

일반 INSERT 문
INSERT INTO TB_USER
(USER_ID, USER_EMAIL)
VALUES
(#{USER_ID}, #{USER_EMAIL})
쿼리를 짜다보니 INSERT 를 할 때 그냥 값을 넣는 것이 아닌 INSERT 하는 조건을 걸어야하는 상황이 생겨서 알아보게 되었다.
INSERT 문에 조건 걸기
INSERT 문 컬럼 뒤에 SELECT 문을 걸어줌으로서 조건을 걸어줄 수 있다.
예시 1)
퇴사하지 않은 직원의 장비 정보를 INSERT 하고 싶은 경우
INSERT INTO TB_USER_EQUIP
(USER_ID, EQUIP_SEQ, NOTE)
SELECT
#{USER_ID}, #{EQUIP_SEQ}, #{NOTE}
FROM DUAL
WHERE #{USE_YN} = 'Y'
예시 2)
부서 테이블에 존재하는 부서만 INSERT 하고 싶은 경우
INSER INTO TB_USER
(USER_ID, USER_NM, DEPT_CD)
SELECT
#{USER_ID}, #{USER_NM}, #{DEPT_CD}
FROM DUAL
WHERE #{DEPT_CD} IN (SELECT DEPT_CD FROM TB_DEPT)
예시 3)
실적이 100건 이상인 직원만 보너스 지급하는 경우
INSERT INTO TB_BONUS
(USER_ID, BONUS_AMT)
SELECT USER_ID, 100000
FROM TB_USER
WHERE SALARY >= 100
DUAL 말고 일반 테이블에서도 조건을 걸 수 있다.
반응형