UNION et tri en SQL
En SQL, l'opérateur UNION nous permet de combiner plusieurs instructions SELECT en un seul jeu de résultats. Cependant, le tri des données combinées peut s'avérer délicat lorsque chaque instruction SELECT peut renvoyer des données différentes.
Considérez la requête suivante qui récupère les données de la table Student en fonction de deux critères :
<code class="language-sql">SELECT id, name, age FROM Student WHERE age > 20 UNION SELECT id, name, age FROM Student WHERE Name LIKE "%a%";</code>
Nous souhaitons trier le résultat combiné défini par la colonne de nom. Malheureusement, la requête suivante ne fonctionne pas comme prévu :
<code class="language-sql">SELECT id, name, age FROM Student WHERE age > 20 ORDER BY name;</code>
Dans cette requête, la clause ORDER BY est appliquée aux résultats combinés des conditions WHERE, plutôt qu'à l'ensemble de résultats complet de UNION. Les données ne sont donc pas triées.
Pour trier l'ensemble de résultats combinés par nom, déplacez simplement la clause ORDER BY en dehors de l'opérateur UNION :
<code class="language-sql">SELECT id, name, age FROM Student WHERE age > 20 UNION SELECT id, name, age FROM Student WHERE Name LIKE "%a%" ORDER BY name;</code>
Dans cette requête modifiée, la clause ORDER BY est appliquée à l'ensemble de résultats complet, garantissant que les données combinées sont correctement triées.
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!