Maison >base de données >tutoriel mysql >Comment puis-je trier les résultats MySQL UNION par groupes à l'aide de ORDER BY ?

Comment puis-je trier les résultats MySQL UNION par groupes à l'aide de ORDER BY ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-11 11:46:42390parcourir

How Can I Sort MySQL UNION Results by Groups Using ORDER BY?

Maîtriser MySQL UNION : trier les résultats au sein des groupes à l'aide de ORDER BY

L'opérateur UNION de MySQL combine les résultats de plusieurs instructions SELECT. Cependant, classer ces résultats combinés peut s’avérer délicat, en particulier lorsque vous devez effectuer un tri au sein de chaque groupe individuel. Ce guide démontre une méthode intelligente utilisant une pseudo-colonne pour y parvenir.

La solution implique ces étapes :

  1. Introduisez une pseudo-colonne : Ajoutez une colonne (nous l'appellerons « Classement ») à chacune de vos SELECT déclarations individuelles. Cette colonne agit comme un identifiant de groupe, attribuant une valeur unique à chaque groupe.

  2. Construisez le UNION : Combinez vos instructions SELECT modifiées en utilisant UNION ALL (ou UNION si vous devez supprimer les doublons).

  3. Commandez avec la requête externe : Enveloppez votre UNION dans une instruction SELECT externe. Utilisez la colonne « Classement » comme critère de tri principal dans la clause ORDER BY de cette requête externe.

  4. Affiner le tri : Après le tri par « Rang » (regroupement), ajoutez vos critères de tri secondaires (par exemple, « id » ou « add_date ») pour trier davantage les résultats au sein de chaque groupe.

Exemple illustratif :

Disons que vous avez une table nommée « table » avec les colonnes « id » et « add_date ». La requête suivante illustre la technique :

<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 < 10  -- Example condition for a group
) AS combined_results
ORDER BY Rank, id, add_date;</code>

Cette requête ajoute une colonne « Classement » (1 pour le premier groupe, 2 pour le second), puis utilise le SELECT externe pour trier d'abord par « Classement » (regroupant les résultats), puis par « id » et 'add_date' au sein de chaque groupe. Cela garantit un classement approprié au sein de chaque sous-ensemble de données généré par les instructions SELECT individuelles. N'oubliez pas de remplacer table et les conditions dans les sous-requêtes par votre table actuelle et votre logique de filtrage.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn