반응형
날짜 시간 asc로 PostgreSQL 정렬, 먼저 null입니까?
날짜 / 시간 필드를 기준으로 오름차순으로 PostgreSQL 테이블을 정렬해야합니다 (예 : last_updated
.
그러나 해당 필드는 비어 있거나 null이 될 수 있으며 null이 아닌 레코드가 non-null 앞에last_updated
와야 합니다. 이것이 가능한가?last_updated
order by last_updated asc /* and null last_updated records first ?? */
Postgres는 그 요구를 정확히 충족시키기 위해 절에 NULLS FIRST | LAST
대한 키워드를 제공합니다 ORDER BY
.
... ORDER BY last_updated NULLS FIRST
전형적인 사용 사례 정렬 순서 (내림차순 인 DESC
기본 오름차순 (의 완전한 반전 산출), ASC
제 널 값을). 종종 바람직하지 않습니다. 따라서 null 값을 마지막으로 유지하려면 :
... ORDER BY last_updated DESC NULLS LAST
색인 을 사용 하여 쿼리를 지원하려면 다음과 일치하도록 만드세요.
CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);
Postgres는 btree 인덱스를 역방향으로 읽을 수 있지만 NULL 값이 추가되는 위치는 중요합니다.
CASE 문을 사용하여 사용자 지정 ORDER BY를 만들 수 있습니다.
CASE 문은 조건을 확인하고 해당 조건을 충족하는 행에 조건을 충족하지 않는 행에 할당 된 값보다 낮은 값을 할당합니다.
예를 들어 이해하는 것이 가장 쉽습니다.
SELECT last_updated
FROM your_table
ORDER BY CASE WHEN last_updated IS NULL THEN 0 ELSE 1 END,
last_updated ASC;
참고 URL : https://stackoverflow.com/questions/9510509/postgresql-sort-by-datetime-asc-null-first
반응형
'Development Tip' 카테고리의 다른 글
활동이 시작되지 않았습니다. 현재 작업이 맨 앞으로 가져 왔습니다. (0) | 2020.11.07 |
---|---|
Ruby 객체 및 JSON 직렬화 (Rails 제외) (0) | 2020.11.07 |
Python 2.7에서 HTTP 프록시를 설정하는 방법은 무엇입니까? (0) | 2020.11.07 |
TcpClient 연결을 적절하고 완전히 닫거나 재설정하는 방법은 무엇입니까? (0) | 2020.11.07 |
Rails, MySQL 및 Snow Leopard (0) | 2020.11.07 |