Rumah > pangkalan data > tutorial mysql > Bolehkah Anda Mengisih Data Secara Dinamik dalam SQL Berdasarkan Keadaan?

Bolehkah Anda Mengisih Data Secara Dinamik dalam SQL Berdasarkan Keadaan?

Linda Hamilton
Lepaskan: 2024-11-19 09:02:02
asal
961 orang telah melayarinya

Can You Dynamically Sort Data in SQL Based on a Condition?

Bolehkah anda Sertakan Pernyataan "Jika" dalam ORDER BY?

Dalam SQL, klausa ORDER BY digunakan untuk mengisih hasil pertanyaan dalam tertib menaik atau menurun. Namun, bagaimana jika anda ingin menggunakan kriteria pengisihan yang berbeza berdasarkan syarat?

Cabarannya:

Andaikan anda mempunyai jadual dengan lajur yang dipanggil "Jenis" yang menunjukkan sama ada rekod mewakili "Ahli" atau "Kumpulan." Anda ingin memesan keputusan mengikut nama keluarga ahli jika jenisnya ialah "Ahli" dan mengikut nama kumpulan jika jenisnya ialah "Kumpulan."

Percubaan Salah:

Seseorang mungkin pada mulanya mencuba pertanyaan berikut:

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

Penyelesaian Betul:

Sebaliknya, terdapat dua pendekatan yang berdaya maju:

1. Fungsi IF:

Fungsi IF MySQL membenarkan anda menilai secara bersyarat sesuatu ungkapan dan mengembalikan satu nilai jika syarat itu benar dan nilai lain jika ia palsu. Begini cara menggunakannya secara ORDER BY:

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

2. Penyata KES:

Penyata CASE menyediakan cara yang lebih fleksibel untuk mengendalikan berbilang keadaan. Ia menilai keadaan dan mengembalikan nilai khusus untuk setiap kes yang sepadan. Keputusan pernyataan CASE menjadi kriteria pengisihan:

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

Nota:

Dalam pernyataan CASE, "ELSE 1" memastikan bahawa rekod tanpa padanan nilai jenis diisih pada penghujung.

Atas ialah kandungan terperinci Bolehkah Anda Mengisih Data Secara Dinamik dalam SQL Berdasarkan Keadaan?. 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