연관 서브쿼리(Correlated Subquery)는 서브쿼리 내에 메인쿼리 칼럼이 사용된 서브쿼리이다. 선수 자신이 속한 팀의 평균 키보다 작은 선수들의 정보를 출력하는 SQL문을 연관 서브쿼리를 이용해서 작성해 보면 다음과 같다.
SELECT T.TEAM_NAME 팀명, M.PLAYER_NAME 선수명, M.POSITION 포지션, M.BACK_NO 백넘버, M.HEIGHT 키
FROM PLAYER M, TEAM T
WHERE M.TEAM_ID = T.TEAM_ID AND M.HEIGHT < ( SELECT AVG(S.HEIGHT) FROM PLAYER S
WHERE S.TEAM_ID = M.TEAM_ID AND S.HEIGHT IS NOT NULL GROUP BY S.TEAM_ID )
ORDER BY 선수명;
여기서 서브쿼리를 돌리면 행이 여러개 나오는 다중행 서브쿼리잖아요
근데 <, =, >=와 같은 비교연산자는 단일행 서브쿼리에서만 사용할 수 있다고 알고있는데
<이 연산자를 써도되는건가요??
oracle초보라 궁금한게 많네요 ㅠㅠ
WHERE 절에 S.TEAM_ID = M.TEAM_ID 조건을 넣어주셨기 때문에 AVG(S.HEIGHT)는 서브쿼리가 실행될 때 1건의 결과만 나오게 됩니다.
서브쿼리에 관련된 다른 예제 링크로 걸었으니 참고해보시면 좋을것같습니다