131 votes

Comment puis-je retourner les lignes avec une valeur spécifique en premier?

Je souhaite que ma requête renvoie les lignes de la table où une colonne contient une valeur spécifique en premier, puis renvoie le reste des lignes en ordre alphabétique.

Si j'ai une table quelque chose comme cet exemple:

  - Table: Users
 - id - name -  city
 - 1    George  Seattle
 - 2    Sam     Miami
 - 3    John    New York
 - 4    Amy     New York
 - 5    Eric    Chicago
 - 6    Nick    New York
 

Et en utilisant cette table, je souhaite que ma requête renvoie les lignes qui contiennent d’abord New York, puis le reste des lignes en ordre alphabétique par ville. Est-ce possible d'utiliser une seule requête?

207voto

Rob Farley Points 9042

Si vous êtes dans un environnement qui gère le = différemment, vous pouvez préférer:

 ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city
 

108voto

chaos Points 69029
SELECT *
FROM `Users`
ORDER BY (`city` = 'New York') DESC, `city`

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