Maison > base de données > tutoriel mysql > Comment puis-je trier les résultats de requêtes MySQL combinées de UNION à l'aide d'une colonne de classement ?

Comment puis-je trier les résultats de requêtes MySQL combinées de UNION à l'aide d'une colonne de classement ?

Susan Sarandon
Libérer: 2025-01-11 11:47:43
original
627 Les gens l'ont consulté

How Can I Sort Combined MySQL Query Results from UNION Using a Rank Column?

L'utilisation combinée de UNION et ORDER BY dans les requêtes MySQL pour obtenir un regroupement de résultats triés

Dans MySQL, nous pouvons combiner plusieurs requêtes en utilisant l'opérateur UNION pour fusionner leurs résultats. Lors du traitement de telles requêtes, il peut être avantageux de trier les résultats combinés d'une manière spécifique.

Supposons que vous souhaitiez extraire différents types d'enregistrements d'une seule table en fonction de la distance par rapport à un emplacement. Disons que vous avez les trois requêtes suivantes :

<code class="language-sql">SELECT id, add_date
FROM Table
WHERE distance = 0;

SELECT id, add_date
FROM Table
WHERE distance < 5;

SELECT id, add_date
FROM Table
WHERE distance BETWEEN 5 AND 15;</code>
Copier après la connexion

Après avoir combiné ces requêtes à l'aide de UNION, vous souhaiterez peut-être trier les résultats sous chaque rubrique, tels que « Résultats exacts », « Résultats dans un rayon de 5 kilomètres », etc.

Pour ce faire, nous pouvons utiliser une pseudo colonne appelée "Rank" pour chaque instruction SELECT. Cette colonne contiendra le classement de chaque enregistrement dans son regroupement spécifique afin que nous puissions le trier avant d'appliquer tout autre critère de tri.

Voici un exemple de la façon d'y parvenir :

<code class="language-sql">SELECT *
FROM (
    SELECT 1 AS Rank, id, add_date
    FROM Table
    WHERE distance = 0
    UNION ALL
    SELECT 2 AS Rank, id, add_date
    FROM Table
    WHERE distance < 5
    UNION ALL
    SELECT 3 AS Rank, id, add_date
    FROM Table
    WHERE distance BETWEEN 5 AND 15
) AS combined_results
ORDER BY Rank, id, add_date;</code>
Copier après la connexion

Dans cette requête, les résultats seront d'abord triés selon la colonne « Classement », qui regroupera les enregistrements en fonction du type de recherche (Exact, Dans un rayon de 5 km ou Dans un rayon de 5 à 15 km). Au sein de chaque groupe, les enregistrements seront triés par « id » et « add_date ».

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal