더북(TheBook)

비교 조건식

비교 조건식은 논리 연산자나 ANY, SOME, ALL 키워드로 비교하는 조건식을 말한다. 여기서는 ANY, SOME, ALL 비교에 대해서 알아 볼텐데 먼저 ANY를 살펴 보자.

입력

    SELECT employee_id, salary
      FROM employees
     WHERE salary = ANY (2000, 3000, 4000)
     ORDER BY employee_id;

결과

    EMPLOYEE_ID   SALARY
    ------------ ---------
            187       3000
            192       4000
            197       3000

이 쿼리는 급여가 2000이거나 3000, 4000인 사원을 추출하는 것이다. ANY가 ‘아무것’이나 ‘하나’란 뜻이 있으므로 위 문장은 세 가지 값, 즉 급여가 2000이나 3000이나 4000 중 하나라도 일치하는 모든 사원을 추출한 것이다. 따라서 ANY는 OR 조건으로 변환이 가능하며 다음 문장도 같은 결과를 반환한다.

입력

    SELECT employee_id, salary
      FROM employees
     WHERE salary = 2000
        OR salary = 3000
        OR salary = 4000
     ORDER BY employee_id;

결과

    EMPLOYEE_ID   SALARY
    ----------- ---------
            187      3000
            192      4000
            197      3000

반면 ALL은 모든 조건을 동시에 만족해야 한다. 다음 쿼리를 보자.

입력

    SELECT employee_id, salary
      FROM employees
     WHERE salary = ALL (2000, 3000, 4000)
     ORDER BY employee_id;

결과

    선택된 행 없음

이 문장은 급여가 2000, 3000, 4000 모두에 해당되는 사원을 조회하므로 조회되는 데이터가 없다. 한 사원의 급여는 한 가지 값만 가지고 있으므로 논리적으로 봐도 잘못된 쿼리다. ANY와는 반대로 ALL 조건식은 AND 조건으로 변환할 수 있다.

마지막으로 알아 볼 SOME은 ANY와 동일하게 사용되며 동작한다.

입력

    SELECT employee_id, salary
      FROM employees
     WHERE salary = SOME (2000, 3000, 4000)
     ORDER BY employee_id;

결과

    EMPLOYEE_ID   SALARY
    ------------ ---------
            187       3000
            192       4000
            197       3000
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.