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

Comment trier par date avant de regrouper dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 02:27:02548parcourir

How to Order by Date Before Grouping in MySQL?

Ordre MySQL avant groupe par

Le problème :

Pour trouver le dernier message pour chaque auteur et regrouper les résultats, nous devons trier les articles par date avant d'appliquer le groupe par opération. Cependant, la requête donnée classe les résultats après le regroupement, ce qui peut conduire à des résultats incorrects.

La solution :

Pour résoudre ce problème, nous pouvons utiliser le HAVING clause au lieu de ORDER BY dans l’opération group by. La clause HAVING nous permet d'appliquer des conditions aux données agrégées et d'exclure les groupes qui ne remplissent pas la condition.

SELECT wp_posts.*
FROM wp_posts
WHERE wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'post'
GROUP BY wp_posts.post_author
HAVING wp_posts.post_date = MAX(wp_posts.post_date)
ORDER BY wp_posts.post_date DESC;

En plaçant la condition dans la clause HAVING, nous nous assurons que les résultats sont filtrés avant le groupe par opération est appliqué. Cela garantit que chaque auteur n'a que son dernier article inclus dans les résultats.

Considérations supplémentaires :

Cette méthode de tri avant regroupement est spécifique à MySQL et peut ne pas fonctionner dans d'autres bases de données telles que Postgres ou SQL Server. Pour ces bases de données, des approches alternatives, telles que l'utilisation d'une sous-requête ou la jointure avec une table de valeurs maximales, peuvent être nécessaires.

Cependant, il est important de noter que l'utilisation de GROUP BY avec un tri peut être efficace pour les grands ensembles de données dans MySQL, surtout si les données ne sont pas réparties uniformément entre les groupes. Par conséquent, il est recommandé d'utiliser cette méthode le cas échéant pour optimiser les performances.

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