mysql order by, null 먼저 및 DESC 이후


79

필드별로 DESC를 정렬하고 NULL 값을 먼저 나열하려면 어떻게해야합니까?

그래서 나는 테이블이 있습니다.

reuestId | offerId | offerTitle
1        | 1       | Alfa
NULL     | 2       | Beta
2        | 3       | Gamma

결과가 다음과 같도록 선택하고 싶습니다.

NULL | 2 | Beta
2    | 3 | Gamma
1    | 1 | Alfa

답변:


156

이 시도:

ORDER BY [reuestId] IS NULL DESC, [reuestId] DESC

작동해야합니다 (mySql)


또는 카테고리에 대한 하위 쿼리

30
SELECT *
FROM TableX
ORDER BY (requestId IS NOT NULL)
       , requestId DESC

이 대답이 첫 번째 대답과 반대라고 생각합니까?
xi.lin

4
@ xi.lin : 아니요, 첫 번째 는 DESC 순서로 IS NULL (본질적으로 1 또는 0을 반환하는 함수) ,이 IS NOT NULL것은 오름차순으로 배치합니다. 동등합니다.
BlueRaja-Danny Pflughoeft 2015

@ BlueRaja-DannyPflughoeft 설명해 주셔서 감사합니다! 나는 IS NULL이 함수 대신 필터라고 잘못 생각했습니다.
xi.lin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.