Oracle/PL/SQL
[SQL] IN, ANY, ALL
타울
2011. 10. 7. 16:41
1. IN
- 조건절에서 사용하며 다수의 비교값과 비교하여 비교값 중 하나라도 같은 값이 있다면 true 이다.
SELECT * FROM emp WHERE sal IN(950, 3000, 1250);- 950, 3000, 1250 과 동일한 값은 모두 출력한다.
2. ANY
- 다수의 비교값 중 한개라도 만족하면 true 이다.
- IN 과 다른점은 비교 연산자를 사용한다는 점이다.
SELECT * FROM emp WHERE sal = ANY(950, 3000, 1250)- 이 문장은 위의 IN의 결과와 같다. "=" 연산자는 비교 값과 같은 값은 모두 출력하게 된다.
SELECT * FROM emp WHERE sal > ANY(950, 3000, 1250)- 이 문장은 ">"연산자를 사용했다. 이 쿼리의 결과는 950보다 큰 값은 모두 출력하게 된다.
SELECT * FROM emp WHERE sal < ANY(950, 3000, 1250)- 이 문장은 "<" 연산자를 사용했다. 이 쿼리의 결과는 3000보다 작은 값은 모두 출력하게 된다.
3. ALL
- 전체 값을 비교하여 모두 만족해야만 true 이다.
SELECT * FROM emp WHERE sal = ALL(950, 3000, 1250)- 결과가 하나도 없다. 하나의 값이 모든 값과 일치 할 수 없기 때문이다.
- 'sal = 950 AND sal = 3000 AND sal = 1250'
SELECT * FROM emp WHERE sal > ALL(950, 3000, 1250)
- 3000보다 큰 값만 표시된다. 'sal > 950 AND sal > 3000 AND sal > 1250' 과 동일하다.
SELECT * FROM emp WHERE sal < ALL(950, 3000, 1250)- 950보다 작은 값만 표시된다. 'sal < 950 AND sal < 3000 AND sal < 1250' 과 동일하다.
%