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
190 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:

SELECT *
FROM table
WHERE id NOT IN (126)
ORDER BY x_field 'f', 'p', 'i', 'a'
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:

...
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
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!

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