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
620 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!

sumber:php.cn
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