Bagaimanakah Anda Mengisih Data Secara Dinamik Berdasarkan Pernyataan Bersyarat dalam SQL?

Mary-Kate Olsen
Lepaskan: 2024-11-16 17:54:03
asal
542 orang telah melayarinya

How Do You Dynamically Sort Data Based on a Conditional Statement in SQL?

Bolehkah Anda Memesan dengan Penyata Bersyarat?

Dalam SQL, klausa ORDER BY membenarkan anda untuk menentukan susunan keputusan anda dikembalikan. Walau bagaimanapun, bagaimana jika anda ingin mengisih hasil anda secara dinamik berdasarkan keadaan tertentu?

Masalah:

Seorang pengguna ingin mengisih data secara berbeza bergantung pada nilai dalam lajur yang dipanggil "Jenis." Jika Jenis ialah 'Ahli,' mereka mahu mengisih mengikut nama keluarga dan jika 'Kumpulan', mereka mahu mengisih mengikut nama kumpulan, kedua-duanya dalam tertib menaik.

Pendekatan Awal:

Pengguna cuba menggunakan pernyataan if dalam ORDER BY klausa:

ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC
Salin selepas log masuk

Penyelesaian:

Walaupun konsepnya betul, SQL tidak menyokong jika pernyataan dalam klausa ORDER BY. Sebaliknya, anda boleh menggunakan sama ada fungsi IF atau pernyataan CASE.

Menggunakan Fungsi IF:

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

Pendekatan ini menggunakan fungsi IF untuk menilai keadaan dan kembalikan medan pengisihan yang sesuai.

Menggunakan KES Pernyataan:

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

Penyata CASE menyediakan cara yang lebih komprehensif untuk mengendalikan berbilang keadaan dan mengembalikan medan pengisihan berbeza berdasarkan setiap syarat.

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