Rumah > pangkalan data > tutorial mysql > Bagaimana Mengisih Keputusan Pangkalan Data mengikut Lajur Berbeza Berdasarkan Syarat?

Bagaimana Mengisih Keputusan Pangkalan Data mengikut Lajur Berbeza Berdasarkan Syarat?

Susan Sarandon
Lepaskan: 2024-11-18 21:11:02
asal
825 orang telah melayarinya

How to Sort Database Results by Different Columns Based on a Condition?

Memahami Pesanan Bersyarat dengan PESANAN OLEH

Dalam pertanyaan pangkalan data, klausa ORDER BY membenarkan anda mengisih hasil pertanyaan anda dalam yang ditentukan pesanan. Walau bagaimanapun, dalam sesetengah kes, anda mungkin perlu menggunakan pesanan bersyarat berdasarkan nilai lajur tertentu.

Masalah: Isih Mengikut Lajur Berbeza Berdasarkan Jenis

Pertimbangkan senario di mana anda mempunyai jadual dengan lajur yang dipanggil "Jenis" yang menentukan sama ada baris sepadan dengan Ahli atau Kumpulan. Anda ingin mengisih keputusan supaya baris Ahli diisih mengikut nama keluarga mereka (LNAME) dalam tertib menaik, manakala baris Kumpulan diisih mengikut nama kumpulan mereka (GROUPNAME) dalam tertib menaik.

Percubaan Salah : Menggunakan Operator Logik

Percubaan yang disediakan menggunakan operator logik (jika, atau) untuk mencipta pernyataan bersyarat, mengakibatkan pertanyaan yang salah:

SELECT * 
  FROM table 
 WHERE STATUS = 'Active' 
 ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC
Salin selepas log masuk

Penyelesaian: Menggunakan Fungsi IF atau Penyata CASE

Untuk mencapai pesanan bersyarat ini, anda boleh menggunakan fungsi IF atau pernyataan CASE:

Fungsi IF:

ORDER BY IF(TYPE='Member', LNAME, GROUPNAME) ASC
Salin selepas log masuk

Ini menggunakan fungsi IF untuk menentukan lajur mana yang hendak digunakan untuk mengisih berdasarkan nilai lajur TYPE.

Kenyataan KES:

ORDER BY 
    CASE `type` 
        WHEN 'Member' THEN LNAME 
        WHEN 'Group' THEN GROUPNAME
        ELSE 1 END 
    ASC
Salin selepas log masuk

Ini menggunakan pernyataan CASE untuk menilai nilai lajur TYPE dan mengembalikan lajur yang sesuai untuk pengisihan. Klausa ELSE dengan nilai 1 memastikan bahawa baris dengan jenis yang tidak diketahui diisih hingga akhir.

Atas ialah kandungan terperinci Bagaimana Mengisih Keputusan Pangkalan Data mengikut Lajur Berbeza Berdasarkan Syarat?. 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