Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memesan Keputusan Pertanyaan SQL dengan Berbilang Nilai dalam Urutan Tertentu?

Bagaimanakah Saya Boleh Memesan Keputusan Pertanyaan SQL dengan Berbilang Nilai dalam Urutan Tertentu?

Linda Hamilton
Linda Hamiltonasal
2025-01-08 18:08:42233semak imbas

How Can I Order SQL Query Results by Multiple Values in a Specific Sequence?

Isih berbilang nilai dalam susunan tertentu

Dalam SQL, hasil pertanyaan boleh diisih mengikut berbilang nilai, tetapi hanya jika nilai ini mesti disertakan dalam klausa ORDER BY. Jika anda cuba mengisih mengikut berbilang nilai yang tidak disertakan dalam klausa ORDER BY (seperti dalam contoh yang disediakan), pertanyaan tidak akan mengembalikan hasil.

Untuk mengisih berbilang nilai dalam susunan tertentu, adalah disyorkan untuk menggunakan pernyataan CASE:

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

Dalam contoh ini, pernyataan CASE memberikan keutamaan angka kepada setiap nilai dalam lajur x_field ('f' ialah 1, 'p' ialah 2 dan seterusnya). Hasilnya kemudian diisih berdasarkan keutamaan ini dan kemudian mengikut lajur id untuk memastikan pengisihan unik dalam setiap tahap keutamaan.

Dengan menggunakan pernyataan CASE, anda boleh menentukan susunan isihan yang diingini untuk berbilang nilai. Dalam contoh ini, keputusan akan diisih dalam susunan 'f', 'p', 'i' dan 'a', seperti yang dinyatakan dalam pernyataan CASE.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memesan Keputusan Pertanyaan SQL dengan Berbilang Nilai dalam Urutan Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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