82 votes

Mysql SQL: élément spécifique à être en premier puis trier le reste des éléments

Supposons que j'ai le tableau ci-dessous.

Je veux obtenir tous les amis, mais je veux que l'id 5 soit le premier élément de la liste. Peu m'importe l'ordre dans lequel je reçois le reste des éléments.

Le résultat de la requête souhaité sera :

amis
-------

id    nom

5     nahum
1     moshe
2     haim
3     yusuf
4     gedalia
6     dana

Comment puis-je faire cela ?

en utilisant Mysql 5.1.x.

Merci !

2voto

MontyPython Points 1320

Vous devriez utiliser la clause ORDER BY FIELD de MySQL pour résoudre cela. Bien que la réponse ait été acceptée sur cela, voici une meilleure solution.

select 1 id, 'Zeta' order_col union all
select 2 id, 'Alpha' order_col union all
select 3 id, 'Gamma' order_col union all
select 4 id, 'Phi' order_col union all
select 5 id, 'Delta' order_col union all
select 6 id, 'Delta' order_col union all
select 7 id, 'Alpha' order_col union all
select 8 id, 'Gamma' order_col union all
select 9 id, 'Zeta' order_col union all
select 10 id, 'Phi' order_col 
order by field (order_col, 'Alpha', 'Gamma', 'Phi', 'Delta', 'Zeta'), id;

Ceci est meilleur que

  • id=quelque chose, ordre par id asc
  • order by case when something then 1 when something_else then 2 end desc

-7voto

Ilya Kogan Points 7357

C'est un peu laid car il y a une duplication de code, mais cela fonctionne :

sélectionner .... où id = 5 
union
sélectionner .... où non id = 5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X