Rumah >pangkalan data >tutorial mysql >Bagaimana Mengisih Nulls Last dan Nilai Tertentu Kedua ke Last dalam PostgreSQL?

Bagaimana Mengisih Nulls Last dan Nilai Tertentu Kedua ke Last dalam PostgreSQL?

DDD
DDDasal
2024-12-29 03:12:11454semak imbas

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

Cara Mengisih Nilai nol Selepas Semua Lain, dengan Kes Khas

Masalah:

Apabila mengisih jadual PostgreSQL dengan medan pengisihan pilihan (isih), bagaimana anda boleh memastikan bahawa:

  • Nilai nol dalam isihan selepas semua nilai bukan nol.
  • Nilai istimewa -1 dalam isihan selepas nilai bukan nol biasa tetapi sebelum nilai nol.

Penyelesaian:

Gunakan SQL berikut pernyataan:

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

Penjelasan:

  • Ungkapan (isihan TIDAK BERBEZA DARI -1) menilai kepada:

    • SALAH untuk semua nilai isihan kecuali -1.
    • BENAR untuk isihan = -1.
  • Penyusunan mengikut ungkapan ini mula-mula mengumpulkan nilai kepada dua kategori: isihan = -1 dan semua nilai isihan lain.
  • Penyusunan kedua mengikut susunan isihan dalam setiap kategori.

Contoh:

Pertimbangkan data sampel berikut:

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  |     

Pertanyaan akan menghasilkan hasil disusun berikut:

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

Atas ialah kandungan terperinci Bagaimana Mengisih Nulls Last dan Nilai Tertentu Kedua ke Last dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn