Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memesan Rekod Pangkalan Data dengan Berbilang Nilai dalam Urutan Tertentu?
Isih berbilang nilai rekod pangkalan data dalam susunan tertentu
Andaikan anda mempunyai jadual dengan kunci diindeks dan medan tidak diindeks x_field
. Anda perlu mencari semua rekod dengan nilai tertentu dan mengembalikannya, dan menyusun keputusan berdasarkan berbilang nilai dalam susunan tertentu.
Sebagai contoh, jika anda mempunyai jadual berikut:
id | x_field |
---|---|
123 | a |
124 | a |
125 | a |
126 | b |
127 | f |
128 | b |
129 | a |
130 | x |
131 | x |
132 | b |
133 | p |
134 | p |
135 | i |
dan anda ingin mengisih keputusan dalam susunan berikut, di mana urutannya x_field = 'f', 'p', 'i', 'a'
:
id | x_field |
---|---|
127 | f |
133 | p |
134 | p |
135 | i |
123 | a |
124 | a |
125 | a |
129 | a |
Anda pada mulanya cuba menggunakan pertanyaan berikut:
<code class="language-sql">SELECT * FROM table WHERE id NOT IN (126) ORDER BY x_field 'f', 'p', 'i', 'a'</code>
Walau bagaimanapun, pertanyaan ini tidak mengembalikan hasil.
Cara untuk menyelesaikan masalah ini ialah dengan menggunakan pernyataan CASE
untuk memberikan nilai berangka kepada setiap nilai x_field
mengikut susunan yang dikehendaki:
<code class="language-sql">... 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 -- 对不在 IN 子句中的值(例如:x_field = 'b')的回退值 END, id</code>
Pertanyaan ini memberikan nilai 1 kepada nilai x_field
sama dengan 'f', nilai 2 kepada nilai sama dengan 'p', nilai 3 kepada nilai sama dengan 'i' dan nilai 4 kepada Sama dengan nilai 'a'. Untuk nilai yang tiada dalam klausa IN
(cth. 'b'), nilai sandaran 5 diberikan. Hasilnya kemudian diisih dalam tertib menaik berdasarkan nilai angka ini dan medan id
.
Pendekatan ini memastikan bahawa keputusan diisih mengikut tertib yang diingini, walaupun x_field
nilai tidak dalam tertib menurun/menaik.
Atas ialah kandungan terperinci Bagaimana untuk Memesan Rekod Pangkalan Data dengan Berbilang Nilai dalam Urutan Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!