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>
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>
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!