Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengisih Nilai Bukan Null Menaik, kemudian Nulls, dengan -1 Nilai Terakhir dalam PostgreSQL?

Bagaimana untuk Mengisih Nilai Bukan Null Menaik, kemudian Nulls, dengan -1 Nilai Terakhir dalam PostgreSQL?

Linda Hamilton
Lepaskan: 2025-01-03 08:07:38
asal
669 orang telah melayarinya

How to Sort Non-Null Values Ascending, then Nulls, with -1 Values Last in PostgreSQL?

Mengisih Nilai Null dengan Cara Istimewa selepas Nilai Bukan Null

Latar Belakang

Dalam jadual PostgreSQL dengan medan isihan pilihan, matlamatnya ialah untuk mengisih nilai seperti berikut:

  • Nilai bukan nol harus datang pertama, mengisih dalam tertib menaik berdasarkan nilai isihannya.
  • Nilai NULL hendaklah datang selepas nilai bukan nol.
  • Secara luar biasa, nilai isihan -1 sepatutnya muncul selepas semua nilai bukan nol yang lain .

Penyelesaian

Untuk mencapai gelagat pengisihan ini, satu pendekatan ialah menggunakan yang berikut URUSAN MENGIKUT klausa:

ORDER BY (sort IS NOT DISTINCT FROM -1), sort
Salin selepas log masuk

Penjelasan

Klausa ini beroperasi seperti berikut:

  • (isih TIDAK BERBEZA DARI -1) menilai kepada SALAH untuk semua nilai kecuali -1, yang menilai kepada BENAR.
  • Ungkapan diisih dalam menaik tertib, bermakna nilai FALSE (nilai bukan nol selain -1) didahulukan sebelum nilai TRUE (-1).
  • Klausa ORDER BY sekunder kemudian diisih mengikut nilai isihan, memastikan nilai bukan nol diisih dalam tertib menaik dalam kumpulan masing-masing.

Contoh

Pertimbangkan sampel yang disediakan data:

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

Menggunakan klausa yang disediakan, item akan diisih seperti berikut:

alpha, beta, gamma, delta, epsilon, zeta
Salin selepas log masuk

Borang Alternatif

Alternatif yang setara dengan klausa awal ialah:

ORDER BY (sort IS DISTINCT FROM -1) DESC, sort
Salin selepas log masuk

Klausa ini menghasilkan gelagat pengisihan yang sama tetapi menggunakan kata kunci DESC untuk mengisih (isih BERBEZA DARI -1) ungkapan dalam tertib menurun.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Nilai Bukan Null Menaik, kemudian Nulls, dengan -1 Nilai Terakhir dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan