Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mendapatkan item tertentu terlebih dahulu dalam pertanyaan MySQL yang disusun?
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!