it-source

열 ASC로 정렬하지만 NULL 값이 먼저입니까?

criticalcode 2023. 5. 6. 15:08
반응형

열 ASC로 정렬하지만 NULL 값이 먼저입니까?

Postgre를 분류해야 합니다.날짜/시간 필드로 SQL 테이블 오름차순(예:last_updated.

그러나 해당 필드는 비어 있거나 null일 수 있으며 null이 있는 레코드를 원합니다.last_updated비흡연자 앞에 오는last_updated.
이것이 가능합니까?

order by last_updated asc  -- and null last_updated records first ??

Postgres에는 다음에 대한 수식어가 있습니다.ORDER BY식:

... ORDER BY last_updated NULLS FIRST

일반적인 사용 사례는 내림차순 정렬()DESC으로, null 값이 먼저인 기본 오름차순()ASC의 완전한 반전을 생성합니다. 이는 종종 바람직하지 않습니다.정렬하기NULL마지막 값:

... ORDER BY last_updated DESC NULLS LAST

인덱스를 사용하여 쿼리를 지원하려면 일치시키십시오.

CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);

Postgres는 btree 인덱스를 역방향으로 읽을 수 있으므로 다음과 거의 같습니다.

CREATE INDEX foo_idx ON tbl (last_updated);

일부 쿼리 계획의 경우 다음 위치가 중요합니다.NULL값이 추가됩니다.참조:

CASE 문을 사용하여 사용자 정의 주문을 생성할 수 있습니다.
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/sort-by-column-asc-but-null-values-first

반응형