[ mysql ] order by null 날짜정렬시 빈값을 맨앞 또는 맨뒤로 하고 다시 최신날짜 또는 오래된날짜로 로 정렬하고 싶다면?
페이지 정보
작성자 웹지기 댓글 0건 조회 7,589회 작성일 22-01-19 16:46본문
1)
SELECT * FROM [table] ORDER BY (CASE WHEN [column] is null THEN 2 WHEN [column] = '0000-00-00' THEN 0 ELSE 1 END), [column] ASC
여기서 [column] = '0000-00-00' 은 [column] = '' 와 같은 식으로도 사용을 하는데 이렇게 오류가발생해서 0으로 채워서 진행했다.
ORDER BY 시 null값이 공백이나 0000-00-00 으로 채워지고 이를 정렬하여 위로 올려준다.
반대로 NULL값을 맨 아래로 보내고 싶다면 THEL 1 ELSE 0 END 를 사용한다.
최신 날짜로 정렬은 맨뒤 DESC
오래된 날짜로 정렬은 맨뒤 ASC
2)
공백과 null의 경우
SELECT * FROM [table] ORDER BY [column] IS NULL ASC, [column] DESC;
그런데 나같은 경우 이렇게 하면 값이 정렬이 되지 않고 중간에 null과 0000-00-00 값이 같이 존재해서 정렬이 되지 않았다.
3)
SELECT * FROM [table] ORDER BY ISNULL([column], 999999999) DESC
이 내용은 확인 해보지 않았다.
4)
SELECT
[column]
FROM
[table]
ORDER BY
FIELD([column], '0000-00-00', '') DESC,
[column] ASC
이 구문 같은 경우 정렬이 되지 않았다
추천0 비추천0
댓글목록
등록된 댓글이 없습니다.