Maison >base de données >tutoriel mysql >Comment récupérer d'abord un élément spécifique dans une requête MySQL triée?
prioriser un élément spécifique dans les résultats de la requête MySQL
Ce guide montre comment récupérer tous les enregistrements à partir d'une table MySQL friends
(contenant id
et name
colonnes), garantissant un ami spécifique (par exemple, avec id
5) apparaît d'abord dans les résultats triés. Nous nous concentrerons sur MySQL version 5.1.x.
L'approche la plus efficace utilise une clause conditionnelle ORDER BY
:
<code class="language-sql">SELECT id, name FROM friends ORDER BY CASE WHEN id = 5 THEN 0 ELSE 1 END, id ASC;</code>
Cette requête hiérarte id = 5
en lui attribuant une valeur de 0 dans l'instruction CASE
. Tous les autres ID reçoivent une valeur de 1, plaçant efficacement id = 5
en haut. Le secondaire ORDER BY id ASC
trie ensuite les résultats restants dans l'ordre croissant de l'id.
Méthodes alternatives (moins efficaces):
Bien que moins efficace que la méthode d'instruction CASE
, vous pouvez obtenir un résultat similaire en utilisant 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>
Cette approche sélectionne d'abord l'ID spécifique, puis sélectionne tous les autres ID, triant enfin le résultat combiné. Cependant, cette méthode est généralement plus lente que l'approche de l'instruction CASE
, en particulier avec des ensembles de données plus grands.
Choisissez la méthode d'instruction CASE
pour les performances et la lisibilité optimales. Il répond directement à l'exigence de tri dans une seule requête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!