Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memesan Rekod Pangkalan Data dengan Berbilang Nilai dalam Urutan Tertentu?

Bagaimana untuk Memesan Rekod Pangkalan Data dengan Berbilang Nilai dalam Urutan Tertentu?

Barbara Streisand
Lepaskan: 2025-01-08 18:12:41
asal
107 orang telah melayarinya

How to Order Database Records by Multiple Values in a Specific Sequence?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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