SQL을 사용하여 날짜별로 정렬할 수 있지만 결과 집합의 뒷부분에 늘 날짜를 넣을 수 있습니까?
MySQL 데이터베이스에 많은 작업이 있으며 필드 중 하나가 "데드라인 날짜"입니다.모든 태스크가 마감일을 지켜야 하는 것은 아닙니다.
SQL을 사용하여 마감일별로 작업을 정렬하고 싶은데 마감일이 없는 작업은 결과 집합 뒤에 넣고 싶습니다.현재와 같이 Null 날짜가 먼저 표시되고 나머지는 마감 날짜별로 가장 이른 날짜부터 가장 늦은 날짜까지 정렬됩니다.
SQL만으로 이 작업을 수행할 수 있는 방법이 있습니까?(필요하다면 PHP로 할 수 있지만 SQL 전용 솔루션이 좋습니다.)
감사합니다!
다음은 ISNULL()이 아닌 표준 SQL만을 사용하는 솔루션입니다.이 기능은 표준 SQL이 아니며 다른 브랜드의 RDBMS에서는 작동하지 않을 수 있습니다.
SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
SELECT * FROM myTable
WHERE ...
ORDER BY ISNULL(myDate), myDate
SELECT foo, bar, due_date FROM tablename
ORDER BY CASE ISNULL(due_date, 0)
WHEN 0 THEN 1 ELSE 0 END, due_date
그래서 당신은 조항에 의한 2개의 주문을 가지고 있습니다.첫 번째는 Null이 아닌 모든 Null을 앞에 배치한 다음 만료 날짜별로 정렬합니다.
가장 쉬운 방법은 마이너스 연산자를 DESC와 함께 사용하는 것입니다.
SELECT * FROM request ORDER BY -date DESC
MySQL에서는 NULL 값은 NULL 이외의 값보다 낮은 순서로 간주되기 때문에 오름차순(ASC) NULL 정렬이 먼저 나열되고 내림차순(DESC)일 경우 마지막으로 나열됩니다.
열 이름 앞에 - (마이너스) 기호를 추가하면 NULL은 -NULL이 됩니다.
-NULL == NULL이므로 DESC를 추가하면 모든 행이 오름차순으로 정렬되고 마지막으로 NULL이 됩니다.
언급URL : https://stackoverflow.com/questions/151195/possible-to-use-sql-to-sort-by-date-but-put-null-dates-at-the-back-of-the-result
'programing' 카테고리의 다른 글
jQuery 플러그인 확인 - 간단한 사용자 지정 규칙을 만드는 방법 (0) | 2023.02.03 |
---|---|
Python 요청 라이브러리의 get 메서드와 함께 헤더 사용 (0) | 2023.02.03 |
Vuex - 변환 후 상태 가져오기 (0) | 2023.02.03 |
테이블에서 데이터를 전치 형식으로 검색할 수 있습니까? (0) | 2023.02.03 |
django.db.db.ss.Operation Error: (2002, "'db'의 MySQL 서버에 접속할 수 없습니다(115)" (0) | 2023.02.03 |