Isih data MySQL: utamakan nilai medan tertentu
Dalam MySQL, jika anda perlu mengisih set hasil berdasarkan nilai medan tertentu dan mengutamakan nilai tertentu, anda boleh menggunakan fungsi FIELD
. Fungsi ini membolehkan anda menentukan susunan nilai yang muncul dalam hasil yang diisih.
Sebagai contoh, pertimbangkan jadual berikut:
id | name | priority |
---|---|---|
1 | core | 10 |
2 | core | 9 |
3 | other | 8 |
4 | board | 7 |
5 | board | 6 |
6 | core | 4 |
Untuk mengisih baris mengikut keutamaan sambil memberi keutamaan kepada baris yang medan "nama" bersamaan dengan "teras", anda boleh menggunakan pertanyaan berikut:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core", "board", "other")</code>
Pertanyaan ini memastikan bahawa baris dengan "nama" ditetapkan kepada "teras" muncul dahulu, tanpa mengira nilai keutamaannya. Baris dengan "nama" ditetapkan kepada "papan" datang seterusnya, diikuti dengan baris dengan "nama" ditetapkan kepada "lain-lain".
Perhatikan bahawa jika anda hanya mengambil berat tentang mengutamakan baris "teras" dan tidak kisah tertib nilai lain, anda boleh menggunakan pertanyaan berikut:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC</code>
Dalam kes ini, baris "teras" akan muncul dahulu dan nilai lain akan diisih dalam tertib menurun.
Akhir sekali, jika anda ingin mengisih mengikut "teras" dahulu dan kemudian menggunakan susunan isihan biasa pada medan lain, anda boleh menggunakan pertanyaan ini:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC, priority</code>
Ingat bahawa fungsi FIELD
adalah khusus MySQL. Selain itu, ia mengembalikan indeks berasaskan sifar nilai. Jika nilai yang ditentukan tiada dalam senarai, sifar dikembalikan. Oleh itu, adalah penting untuk mempertimbangkan pertimbangan ini apabila menggunakan fungsi FIELD
untuk mengisih data dalam MySQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengutamakan Nilai Medan Tertentu Apabila Memesan Data dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!