Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memesan Keputusan SQL dengan Berbilang Nilai dalam Urutan Dipratentukan?
Menyesuaikan Susunan Keputusan SQL dengan Berbilang Nilai
Menggunakan jadual SQL yang mengandungi banyak medan, terutamanya yang tidak mempunyai indeks, boleh menjadikan pengambilan semula dan pesanan rekod tertentu sebagai tugas yang rumit. Katakan anda mempunyai jadual dengan x_field
tidak diindeks. Hanya menggunakan ORDER BY
dengan berbilang nilai tidak akan menjamin urutan yang anda perlukan.
Sebagai contoh, pertanyaan ini cacat:
<code class="language-sql">SELECT * FROM table WHERE id NOT IN (126) ORDER BY x_field 'f', 'p', 'i', 'a'</code>
Sintaks tidak betul dan ia tidak akan menghasilkan hasil yang dimaksudkan. Penyelesaiannya terletak pada menggunakan pernyataan CASE
untuk mentakrifkan susunan secara eksplisit:
<code class="language-sql">SELECT * FROM table WHERE x_field IN ('f', 'p', 'i', 'a') ORDER BY CASE x_field WHEN 'f' THEN 1 WHEN 'p' THEN 2 WHEN 'i' THEN 3 WHEN 'a' THEN 4 ELSE 5 -- Handles values outside the specified set END, id</code>
Pertanyaan yang diperhalusi ini memberikan nilai tertib berangka kepada setiap nilai x_field
yang dikehendaki. Rekod dengan x_field = 'f'
muncul dahulu, diikuti dengan 'p', 'i' dan 'a'. Mana-mana nilai x_field
lain akan dikumpulkan pada penghujung, disusun mengikut id
. Pendekatan ini menyediakan kaedah yang fleksibel dan boleh dipercayai untuk mengurus senario pesanan yang kompleks dalam SQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memesan Keputusan SQL dengan Berbilang Nilai dalam Urutan Dipratentukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!