[SQL] 첫번째 날짜 오름차순, 널 (null)에 의해 PostgreSQL의 종류?
SQL첫번째 날짜 오름차순, 널 (null)에 의해 PostgreSQL의 종류?
나는 날짜 / 시간 필드, 예를 들어,에 의해 PostgreSQL의 테이블 오름차순으로 정렬 할 필요가 LAST_UPDATED.
그러나 필드가 비어 있거나 null이 될 수 나는 null 이외 LAST_UPDATED 앞에 오는 LAST_UPDATED에 널 (null) 레코드를 원하는됩니다. 이게 가능해?
order by last_updated asc /* and null last_updated records first ?? */
해결법
-
==============================
1.포스트 그레스는 NULLS FIRST를 제공 | 정확히 필요성에 대한 수용에 ORDER BY 절에 대한 마지막 키워드 :
포스트 그레스는 NULLS FIRST를 제공 | 정확히 필요성에 대한 수용에 ORDER BY 절에 대한 마지막 키워드 :
... ORDER BY last_updated NULLS FIRST
전형적인 사용 사례 제 널 값 기본 오름차순 (ASC)의 완전한 반전을 수득 정렬 순서 (DESC)을 내림차순으로한다. 종종 바람직하지 - 그래서, 마지막으로 널 (null) 값을 유지하기 :
... ORDER BY last_updated DESC NULLS LAST
이 일치하도록, 인덱스와 쿼리를 지원하기 위해 :
CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);
포스트 그레스 거꾸로 BTREE 인덱스를 읽을 수 있지만 NULL 값이 추가되는 경우가 중요.
-
==============================
2.당신은 CASE 문을 사용하여 사용자 정의 주문을 생성 할 수 있습니다. 해당 조건을 조건을 충족하지 않는 행에 할당 된 것보다 낮은 값을 충족 행에 CASE 문 당신의 상태를 확인하고 할당합니다. 아마 예를 주어 이해하기 가장 쉬운 방법 :
당신은 CASE 문을 사용하여 사용자 정의 주문을 생성 할 수 있습니다. 해당 조건을 조건을 충족하지 않는 행에 할당 된 것보다 낮은 값을 충족 행에 CASE 문 당신의 상태를 확인하고 할당합니다. 아마 예를 주어 이해하기 가장 쉬운 방법 :
SELECT last_updated FROM your_table ORDER BY CASE WHEN last_updated IS NULL THEN 0 ELSE 1 END, last_updated ASC;
from https://stackoverflow.com/questions/9510509/postgresql-sort-by-datetime-asc-null-first by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 여러 업데이트 (0) | 2020.03.09 |
---|---|
[SQL] 권장 SQL 데이터베이스 태그의 디자인 또는 태그 [마감] (0) | 2020.03.08 |
[SQL] 왼쪽은 NULL이 WHERE IS 가입 대 NOT이 NOT IN 대 EXISTS 사이의 차이점은 무엇입니까? (0) | 2020.03.08 |
[SQL] 이 집계 함수 나 GROUP BY 절 중 하나에 포함되지 않기 때문에 열 이유는 선택 목록에서 유효하지 않습니다 [중복] (0) | 2020.03.08 |
[SQL] 단일 SQL 쿼리에서 여러 행을 삽입? [복제] (0) | 2020.03.08 |