내가 이해한 방식
SELECT *
FROM emp
WHERE empno IN ( SELECT mgr
FRom EMP
)
요건 되지만
SELECT *
FROM emp
WHERE empno = ( SELECT mgr
FRom EMP
)
요거는 안됨 서브쿼리의 mgr 값은 여러개인데
empno 의 값이 여러개인 mgr 값이 될수가 없고
mgr 값중에 1개의 값이 되어야 하기 때문에 in 을 써줘야함
272 p 이해가 잘 안됨 ]
NOT IN 연산자 사용시 서브쿼리의 결과에 NULL이 존재할 경우
전체가 NULL인 것처럼 동작한다.
EX)
SELECT *
FROM emp
WHERE empno NOT IN (SELECT mgr
FROM emp )
관리자인 사원 정보 조회
SELECT *
FROM emp
WHERE empno IN ( SELECT mgr
FROM emp )
-- 모르겠다.....
- multi column subquery non pairwise
SELECT *
FROM emp
WHERE MGR IN ( SELECT mgr
FROM emp
WHERE empno IN ( 7499, 7782 ))
AND deptno IN ( SELECT deptno
FROM emp
WHERE empno IN ( 7499, 7782))
- multi column subquery (pairwise )
SELECT *
FROM emp
WHERE (mgr, deptno ) IN ( SELECT mgr, deptno
FROM emp
WHERE empno IN ( 7499, 7782 ) )
emp 테이블
---- 고민해봐야 하는것.
SELECT
(SELECT dname
FROM dept
WHERE deptno = emp.deptno ),
emp.empno , ename
FROM emp
----------
상호 연관 서브쿼리 ( sub query 에서 main query 를 참조
속한 부서의 급여 평균보다 높은 직원 조회
SELECT *
FROM emp a
WHERE sal > ( SELECT AVG(sal)
FROM emp b
WHERE deptno = a.deptno ) ;
댓글
댓글 쓰기