프로그래밍/ORACLE & SQL

[SQL] 쿼리문 실행순서

까망_토끼 2023. 3. 27. 13:48

1. FROM , JOIN
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY

쿼리문은 순서를 유의하여야 한다.


예시)

SELECT *
  FROM EMP
 WHERE ROWNUM=1
ORDER BY NAME desc

위의 코드는  이름 별로 역정렬하여 첫 줄만 출력하는 것이 의도이다.
쿼리문을 이렇게 짜게되면 WHERE절이 먼저 실행되기 때문에 정렬되지 않은 첫 줄이 SELECT된다.


SELECT *
   FROM (SELECT *
                FROM EMP
              ORDER BY NAME DESC )
  WHERE ROWNUM=1

서브쿼리로 한번더 감싸줘서 문제를 해결할 수 있다.