Renvoyer d'abord les lignes avec une valeur spécifique
Problème :
Vous souhaitez récupérer des données à partir d'une table, en donnant la priorité aux lignes qui contiennent une valeur spécifique dans une colonne particulière. Les lignes restantes doivent suivre par ordre alphabétique en fonction d'une autre colonne.
Considérez un exemple de tableau Utilisateurs avec la structure suivante :
id | name | city |
---|---|---|
1 | George | Seattle |
2 | Sam | Miami |
3 | John | New York |
4 | Amy | New York |
5 | Eric | Chicago |
6 | Nick | New York |
Solution :
Pour hiérarchiser les lignes en fonction d'une valeur spécifique et classer par ordre alphabétique les lignes restantes, utilisez ce qui suit requête :
ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city
Explication :
L'expression CASE attribue une valeur de priorité de 1 aux lignes où la colonne de ville correspond à la valeur spécifiée (« New York ») et une valeur de priorité de 2 pour toutes les autres lignes. Cela garantit que les lignes contenant « New York » apparaissent en premier dans l'ensemble de résultats.
La deuxième partie de la clause ORDER BY, ville, trie davantage les lignes de chaque groupe prioritaire par ordre alphabétique en fonction de la colonne ville.
Cette requête renverra les résultats suivants :
id | name | city |
---|---|---|
3 | John | New York |
4 | Amy | New York |
6 | Nick | New York |
1 | George | Seattle |
2 | Sam | Miami |
5 | Eric | Chicago |
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!