ORDER BY bonus DESC
- 30
- NULL
- 10
ORDER BY bonus DESC만 쓰면 NULL을 큰
값처럼 볼지 작은 값처럼 볼지에 대한 의도가 드러나지 않습니다. 정렬
기준에 결측값이 들어가면 위치를 직접 적는 쪽이 안전합니다.
ORDER BY bonus DESC
NULLS LAST로 값 뒤에 고정한다.
ORDER BY bonus DESC
숫자는 내림차순이 분명하지만, NULL의 위치는 이 코드만으로는 불명확합니다.
쿼리는 같아도 “미정 값”을 정렬 최상단에 놓는 엔진에서는 결과 페이지가 바뀝니다.
ORDER BY bonus DESC NULLS LAST
NULL을 뒤로 보내려면 먼저 NULL 여부를 0과 1로 정렬하고, 그 다음 실제 값을 내림차순으로 정렬합니다.
ORDER BY CASE WHEN bonus IS NULL THEN 1 ELSE 0 END, bonus DESC
nullable 컬럼이면 페이지 순서, TOP-N, 랭킹 결과가 DBMS마다 달라질 수 있습니다.
비즈니스 의미가 “값 없음”인지 “최소값”인지에 따라 의도를 먼저 고정합니다.
지원하지 않는 엔진까지 고려해야 하면 CASE 방식으로 같은 순서를 재현합니다.