Maîtriser les résultats triés avec UNION et ORDER BY de MySQL
Combiner des données de plusieurs instructions SELECT
à l'aide de UNION
de MySQL est puissant, mais maintenir le tri des sections individuelles peut être délicat. Ce guide montre comment trier les résultats dans chaque section en fonction d'une colonne spécifique (comme « id » ou « add_date ») tout en préservant le regroupement logique de votre UNION
requête.
Votre scénario implique de récupérer des données basées sur différents critères à partir d'un seul tableau, puis de consolider les résultats à l'aide de UNION
sous des rubriques distinctes. Voici la solution :
Introduisez une colonne « classement » (une pseudo-colonne) à chaque SELECT
affirmation. Cette valeur numérique dicte l'ordre d'affichage dans chaque section.
<code class="language-sql">SELECT 1 AS Rank, id, add_date FROM Table UNION ALL SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < ...</code>
Ensuite, encapsulez cette requête combinée dans une sous-requête. La requête principale utilise ensuite cette sous-requête comme source de données, en triant d'abord selon la colonne « Classement », puis selon les critères de tri que vous avez choisis (par exemple, « id » ou « add_date »).
<code class="language-sql">SELECT * FROM ( SELECT 1 AS Rank, id, add_date FROM Table UNION ALL SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < ... ) AS Subquery ORDER BY Rank, id; -- Or ORDER BY Rank, add_date;</code>
Cette méthode garantit un tri précis dans chaque section définie par votre UNION
opération, fournissant un ensemble de résultats propre et organisé.
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!