Maison > base de données > tutoriel mysql > Comment trier par date et heure avant de regrouper par nom dans MySQL ?

Comment trier par date et heure avant de regrouper par nom dans MySQL ?

DDD
Libérer: 2024-10-30 09:23:27
original
211 Les gens l'ont consulté

How to Sort by Date and Time before Grouping by Name in MySQL?

Gérer le tri et le regroupement dans MySQL : combiner ORDER BY et GROUP BY pour des résultats spécifiques

Dans MySQL, obtenir le tri et le regroupement souhaités des les données peuvent être difficiles lorsque l’ordre des opérations est en conflit. Cette question présente un scénario où l'objectif est de trier les données par date et heure avant de les regrouper par nom.

Comme l'explique l'utilisateur, l'approche standard consistant à utiliser ORDER BY date ASC, heure ASC suivi de GROUP BY nom échoue car GROUP BY doit précéder ORDER BY dans la requête. Pour résoudre ce conflit, la réponse propose deux méthodes alternatives :

Méthode 1 : Sous-requête

La première méthode consiste à utiliser une sous-requête pour obtenir l'ordre souhaité avant le regroupement :

<code class="sql">SELECT * 
FROM (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC 
) AS sub
GROUP BY name</code>
Copier après la connexion

Cette sous-requête crée une table temporaire, sub, qui contient les données triées par date et heure. La requête principale regroupe ensuite cette table temporaire par nom, obtenant ainsi le résultat souhaité.

Méthode 2 : Utilisation d'une expression de table commune (CTE)

Une autre méthode, généralement utilisée avec MySQL versions 8.0 et supérieures, consiste à créer une expression de table commune (CTE) pour effectuer le tri et le regroupement :

<code class="sql">WITH sorted_data AS (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC 
)
SELECT * 
FROM sorted_data
GROUP BY name</code>
Copier après la connexion

La CTE, sorted_data, obtient le même résultat que la sous-requête en créant une table temporaire avec les données triées, qui sont ensuite utilisées dans la requête principale pour le regroupement.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal