Rumah >pangkalan data >tutorial mysql >Bagaimanakah CASE Expression Order SQL Results by Specific Values?

Bagaimanakah CASE Expression Order SQL Results by Specific Values?

DDD
DDDasal
2025-01-08 17:57:41741semak imbas

How Can a CASE Expression Order SQL Results by Specific Values?

Gunakan ungkapan CASE untuk mengisih hasil SQL mengikut nilai tertentu

Apabila mendapatkan semula data daripada jadual, anda selalunya perlu mengisih hasil berdasarkan berbilang nilai dalam susunan tertentu. Dalam kes ini, tugasnya adalah untuk mengekstrak rekod daripada jadual berdasarkan kekunci yang ditentukan dan medan tidak diindeks dan mengisih keputusan dengan berbilang nilai dalam urutan tertentu.

Untuk memenuhi keperluan ini, ungkapan CASE boleh digunakan untuk mencapai susunan yang diingini dan bukannya menggunakan sintaks ORDER BY tradisional. Sintaks ungkapan CASE adalah seperti berikut:

<code class="language-sql">CASE
   WHEN condition1 THEN value1
   WHEN condition2 THEN value2
   ...
   ELSE valueN
END</code>

Dalam contoh ini, ungkapan CASE digunakan untuk menetapkan susunan khusus kepada setiap nilai dalam x_field. Sebagai contoh, nilai 'f', 'p', 'i' dan 'a' diberikan nombor urutan 1, 2, 3 dan 4 masing-masing. Mana-mana nilai lain yang tidak sepadan dengan nilai khusus ini akan diberikan urutan lalai nombor 5.

Berikut ialah contoh bagaimana ungkapan CASE boleh ditambah pada pertanyaan SQL:

<code class="language-sql">SELECT *
FROM table
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>

Dengan menggunakan ungkapan CASE, keputusan akan diisih mengikut nombor urutan yang ditetapkan, dengan berkesan mengisih nilai 'f', 'p', 'i' dan 'a' dalam urutan yang ditentukan.

Atas ialah kandungan terperinci Bagaimanakah CASE Expression Order SQL Results by Specific Values?. 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