Implémenter Order By
dans la requête UNIONDans la programmation de bases de données, une requête UNION combine les résultats de différentes tables ou sous-requêtes. Cependant, l'utilisation de ORDER BY directement dans une instruction UNION peut provoquer des exceptions lorsque les données sont extraites de plusieurs tables et que les résultats doivent être triés. Comme le montre l'exemple suivant :
<code class="language-sql">SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY table2.field1</code>
Cette requête échouera, en particulier lors de l'utilisation du moteur de base de données MS Access Jet. La solution consiste à enfermer chaque sous-requête dans sa propre clause ORDER BY :
<code class="language-sql">SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 ) DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) DUMMY_ALIAS2</code>
L'instruction ORDER BY sera appliquée à chaque sous-requête individuellement en mettant la sous-requête entre parenthèses et en lui attribuant un alias (DUMMY_ALIAS1 et DUMMY_ALIAS2). Cela garantit un classement correct des résultats combinés sans provoquer d’erreurs.
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!