더북(TheBook)

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건은 제외하고 나머지 건이 입력됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.