Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mendapatkan item tertentu terlebih dahulu dalam pertanyaan MySQL yang disusun?

Bagaimana untuk mendapatkan item tertentu terlebih dahulu dalam pertanyaan MySQL yang disusun?

DDD
DDDasal
2025-01-24 09:22:10287semak imbas

How to Retrieve a Specific Item First in a Sorted MySQL Query?

Mengutamakan Item Khusus dalam Keputusan Pertanyaan MySQL

Panduan ini menunjukkan cara untuk mendapatkan semula semua rekod daripada jadual MySQL friends (mengandungi lajur id dan name), memastikan rakan tertentu (mis., dengan id 5) muncul dahulu dalam hasil yang diisih. Kami akan menumpukan pada MySQL versi 5.1.x.

Pendekatan paling cekap menggunakan klausa ORDER BY bersyarat:

<code class="language-sql">SELECT id, name
FROM friends
ORDER BY CASE WHEN id = 5 THEN 0 ELSE 1 END, id ASC;</code>

Pertanyaan ini mengutamakan id = 5 dengan memberikannya nilai 0 dalam pernyataan CASE. Semua ID lain menerima nilai 1, dengan berkesan meletakkan id = 5 di bahagian atas. ORDER BY id ASC sekunder kemudian mengisih hasil baki dalam tertib menaik ID.

Kaedah Alternatif (Kurang Cekap):

Walaupun kurang cekap daripada kaedah pernyataan CASE, anda boleh mencapai hasil yang serupa menggunakan UNION ALL:

<code class="language-sql">SELECT id, name
FROM friends
WHERE id = 5
UNION ALL
SELECT id, name
FROM friends
WHERE id != 5
ORDER BY id ASC;</code>

Pendekatan ini mula-mula memilih ID tertentu, kemudian memilih semua ID lain, akhirnya mengisih hasil gabungan. Walau bagaimanapun, kaedah ini biasanya lebih perlahan daripada pendekatan pernyataan CASE, terutamanya dengan set data yang lebih besar.

Pilih kaedah pernyataan CASE untuk prestasi optimum dan kebolehbacaan. Ia secara langsung menangani keperluan pengisihan dalam satu pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan item tertentu terlebih dahulu dalam pertanyaan MySQL yang disusun?. 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