>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 Null을 마지막으로 정렬하고 특정 값을 마지막에서 두 번째로 정렬하는 방법은 무엇입니까?

PostgreSQL에서 Null을 마지막으로 정렬하고 특정 값을 마지막에서 두 번째로 정렬하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-29 03:12:11454검색

How to Sort Nulls Last and a Specific Value Second to Last in PostgreSQL?

특수 사례를 사용하여 null 값을 다른 값보다 먼저 정렬하는 방법

문제:

선택적 정렬 필드(sort)를 사용하여 PostgreSQL 테이블을 정렬할 때 어떻게 보장할 수 있습니까? that:

  • 정렬의 Null 값은 Null이 아닌 모든 값 뒤에 정렬됩니다.
  • 정렬의 특수 값 -1은 Null이 아닌 일반 값 뒤, Null 값 앞에 정렬됩니다.

해결책:

다음을 사용하세요. SQL 문:

SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;

설명:

  • 식(sort IS NOT DISTINCT FROM -1)은 다음과 같이 평가됩니다.

    • 다음을 제외한 모든 정렬 값에 대해 FALSE -1.
    • sort = -1인 경우 TRUE입니다.
  • 이 표현식을 기준으로 정렬하면 먼저 값이 두 개의 범주(sort = -1 및 기타 모든 정렬 값)로 그룹화됩니다.
  • 각각의 정렬 순서에 따른 2차 정렬 카테고리.

예:

다음 샘플 데이터를 고려하세요.

id | f_id |   name   | sort
---+------+----------+-------
 1 |    1 | zeta     |    -1
 2 |    1 | alpha    |     1
 3 |    1 | gamma    |     3
 4 |    1 | beta     |     2
 5 |    1 | delta    |     
 6 |    1 | epsilon  |     

쿼리는 다음과 같이 정렬된 결과를 생성합니다.

id | f_id |   name   | sort
---+------+----------+-------
 2 |    1 | alpha    |     1
 4 |    1 | beta     |     2
 3 |    1 | gamma    |     3
 5 |    1 | delta    |     
 6 |    1 | epsilon  |     
 1 |    1 | zeta     |    -1

위 내용은 PostgreSQL에서 Null을 마지막으로 정렬하고 특정 값을 마지막에서 두 번째로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.