카테고리 없음
[SQLD] 55회 | UNION - order by
wjdwwidz
2024. 11. 17. 17:52
SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2
ORDER BY column1;
그런데 두 번째 order by 는 SQL 문 select 절과 동일하게 들여쓰기가 되어있다.
이 때 order by 는 어디서 실행될까?
1. SQL 실행 순서
일반적인 SQL 실행 순서:
- FROM: 데이터를 가져올 테이블/뷰를 결정.
- WHERE: 조건에 따라 행을 필터링.
- GROUP BY: 그룹화를 적용.
- HAVING: 그룹화된 데이터에 조건 적용.
- SELECT: 결과 컬럼을 선택.
- ORDER BY: 최종 결과를 정렬.
순서대로 진행된다.
하지만 SQL의 UNION 연산에서 각각의 SELECT 문에 대해서는 개별적으로 ORDER BY를 적용할 수 없다.
WHERE 절과 ORDER BY 절이 들여쓰기로 구분되더라도 실행 순서는 SQL 전개 순서에 따라 진행된다.
들여쓰기와 실행의 관계
- WHERE 절과 ORDER BY 절이 들여쓰기로 구분되더라도 실행 순서는 위의 논리적 순서에 따라 진행된다.
예를 들어,
WHERE가 데이터를 필터링한 후,
필터링된 데이터를 기준으로 ORDER BY가 정렬을 수행한다.
SELECT column1
FROM table_name
WHERE column2 = 'value'
ORDER BY column3;
결론
ORDER BY는 항상 쿼리의 최종 처리 단계에서 실행되며, 들여쓰기는 실행 순서에 영향을 주지 않는다.
WHERE 조건은 그보다 먼저 실행되어 데이터를 필터링한다.
따라서 ORDER BY는 항상 쿼리의 최종 처리 단계에서 실행되며, 들여쓰기는 실행 순서에 영향을 주지 않는다.