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

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