Self Check
1 정답
코드3
INSERT INTO emp_test2 (emp_no, emp_name, hire_date, salary)
SELECT emp_no, emp_name, hire_date, salary
FROM emp_test a
WHERE emp_no >= 1004
AND NOT EXISTS (SELECT 1
FROM emp_test2 b
WHERE a.emp_no = b.emp_no);
해설 emp_test 테이블에서 emp_no 칼럼 값이 1004 이상인 건을 읽어 emp_test2 테이블에 넣는 SELECT 문이 결합된 INSERT 문을 작성하면 됩니다. 그런데 1004번 사원은 이미 emp_test2 테이블에 데이터가 있어서 중복 값을 입력하게 되므로 오류가 발생합니다. 따라서 emp_test 테이블을 조회하는 SELECT 문의 WHERE 절에서 emp_no 값이 1004보다 크거나 같은 조건을 줍니다. 그리고 서브쿼리로 emp_test2 테이블과 emp_test 테이블을 세미조인하는데, NOT EXISTS 연산자를 사용하면 1004 이상인 건 중 두 테이블의 조인 조건에 맞는 1004건은 제외하고 나머지 건이 입력됩니다.