[SQL] 정렬 첫번째 열 ASC하지만 NULL 값으로?
SQL정렬 첫번째 열 ASC하지만 NULL 값으로?
나는 날짜 / 시간 필드, 예를 들어,에 의해 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/sort-by-column-asc-but-null-values-first by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] C #에서 호출 SQL 정의 기능 (0) | 2020.05.24 |
---|---|
[SQL] 나는 MS Access에서 SQL INTERSECT 및 MINUS 연산을 구현할 수있는 방법 (0) | 2020.05.24 |
[SQL] 여러 열에서 CHECK 제약 조건 (0) | 2020.05.24 |
[SQL] 여러 행의 마지막 삽입 된 ID를 가져 (0) | 2020.05.24 |
[SQL] SQL에서 어떻게 정수의 최대 값을받을 수 있나요? (0) | 2020.05.24 |