Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengisih Data PostgreSQL dengan Nulls dan Nilai Kes Khas (-1)?

Bagaimana untuk Mengisih Data PostgreSQL dengan Nulls dan Nilai Kes Khas (-1)?

Barbara Streisand
Lepaskan: 2024-12-29 18:16:10
asal
580 orang telah melayarinya

How to Sort PostgreSQL Data with Nulls and a Special Case (-1) Value?

Isih Nilai dengan Kes Khas dalam PostgreSQL

Perbincangan ini tertumpu pada penyusunan data daripada jadual PostgreSQL bernama "tugas." Setiap tugas mempunyai medan pilihan yang dipanggil "isih." Matlamatnya adalah untuk mengutamakan tugasan pengisihan tanpa nilai "isih" selepas semua yang lain, kecuali yang mempunyai "-1" sebagai nilai isihannya, yang sepatutnya muncul selepas semua yang lain.

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

Menggunakan COALESCE(sort,99999) sahaja akan mengumpulkan nilai nol selepas nilai bukan nol, tetapi ia tidak akan menangani yang istimewa kes "-1."

Penyelesaian menggunakan jenis data boolean PostgreSQL untuk mencapai susunan pengisihan yang diingini:

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

Pertanyaan ini mengambil kesempatan daripada fakta bahawa perbandingan "(sort IS NOT DISTINCT FROM -1)" menilai kepada FALSE untuk semua nilai kecuali "-1," yang dengan sendirinya menilai kepada TRUE. Dengan mengisih mengikut ungkapan ini dahulu, nilai "-1" diletakkan pada penghujung tertib, tanpa mengira nilai isihannya.

Pendekatan alternatif, menggunakan kata kunci DESC, turut dibentangkan:

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

Kedua-dua kaedah secara berkesan mengisih tugas tanpa nilai "isih" selepas semua yang lain, sambil memastikan bahawa nilai "-1" muncul selepas semua jenis bukan nol yang lain nilai.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Data PostgreSQL dengan Nulls dan Nilai Kes Khas (-1)?. 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