[DB] MySQL 다중행 서브쿼리 연산자

2020. 5. 25. 13:16DataBase/MySQL

반응형

■ IN

하나의 컬럼을 여러개의 "=" 조건으로 처리해야할 경우 사용


설명) SAL 컬럼 데이터 중 1300, 800, 950 인 레코드만 출력
SELECT ENAME, SAL, DEPTNO
FROM EMP
WHERE SAL IN (SELECT MIN(SAL)
                FROM EMP
            GROUP BY DEPTNO);

같은결과

SELECT ENAME, SAL, DEPTNO
FROM EMP
WHERE SAL IN (1300, 800, 950);

■ ANY

여러개의 조건데이터 중 하나의 값이라도 만족하면 레코드 반환


설명) SAL컬럼의 데이터 중 1600, 1250, 1250, 1500 값보다 하나라도 클경우 레코드 반환
SELECT ENAME, SAL
FROM EMP
WHERE SAL > ANY(SELECT SAL
                  FROM EMP
                 WHERE JOB = 'SALESMAN');

같은결과

SELECT ENAME, SAL
FROM EMP
WHERE SAL > ANY(1600, 1250, 1250, 1500);

■ ALL

여러개의 조건데이터가 모두 만족하면 레코드 반환


설명) SAL컬럼의 데이터 중 1600, 1250, 1250, 1500 값보다 작을경우 레코드 반환
(최솟값이 1250 이므로 1250보다 작을경우 만족)
SELECT ENAME, SAL
FROM EMP
WHERE SAL < ALL (SELECT SAL
                   FROM EMP
                  WHERE JOB = 'SALESMAN');

같은결과

SELECT ENAME, SAL
FROM EMP
WHERE SAL < ALL (1600, 1250, 1250, 1500);

 

반응형