[DATABASE] IN/SOME/ANY/ALL/EXISTS 함수
@욕심쟁이
·2020. 11. 18. 09:52
반응형
ANY/SOM
- ANY/SOME은 IN과는 달리 '=' 이외의 다른 연산자를 활용 할 수 있음.
- ANY/SOME은 기능이 동일
SELECT employee_id, salary
FROM employees
WHERE salary IN (2000, 3000, 4000); -- '='으로만 연산
SELECT employee_id, salary
FROM employees
WHERE salary >= ANY (2000, 3000, 4000);
SELECT employee_id, salary
FROM employees
WHERE salary >= SOME (2000, 3000, 4000);
SELECT employee_id, salary
FROM employees
WHERE salary >= ALL(2000, 3000, 4000)
ORDER BY salary;
EXISTS 함수
- IN 연산자와 유사하게 연산하지만 IN 연산자의 경우 매 행마다 서브쿼리가 새롭게 연산되기 때문에 EXISTS에 비해서 상대적으로 느리다.
SELECT department_id, department_name
FROM departments a
WHERE EXISTS (
SELECT *
FROM employees b
WHERE a.department_id = b.department_id
AND b.salary > 10000
);
SELECT department_id, department_name
FROM departments a
WHERE department_id IN (
SELECT department_id
FROM employees b
WHERE b.salary > 10000
);
TOP-n 분석
- ROWNUM은 의사컬럼으로 ORDER BY절이 없는 경우 출력되는 컬럼의 순서는 ROWNUM의 값에 따라 출력된다.
SELECT last_name, salary
FROM (
SELECT last_name, salary
FROM employees
ORDER BY salary DESC
)
WHERE ROWNUM <= 5;
반응형
'IT > DB' 카테고리의 다른 글
[DATABASE] DML - MERGE 함수 (0) | 2020.11.18 |
---|---|
[DATABASE] 그룹함수I [ROLLUP/CUBE/GROUPING SETS/LISTAGG] (0) | 2020.11.18 |
[DATABASE] CASE / DECODE / 조건 선택문 (0) | 2020.11.11 |
[DATABASE] 집합연산자란? (0) | 2020.11.11 |
[DB] Mac에서 Mysql : mysql-u root -p가 안될때 (0) | 2020.09.26 |