ホームページ  >  記事  >  データベース  >  MySQL でグループ化する前に日付で並べ替えるにはどうすればよいですか?

MySQL でグループ化する前に日付で並べ替えるにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-15 02:27:02475ブラウズ

How to Order by Date Before Grouping in MySQL?

グループ化前の MySQL の順序

問題:

の最新の投稿を見つけるには各著者と結果をグループ化するには、操作ごとにグループを適用する前に、投稿を日付順に並べる必要があります。ただし、指定されたクエリはグループ化後に結果を順序付けしているため、不正確な結果が生じる可能性があります。

解決策:

この問題を解決するには、HAVING を使用できます。 group by 操作内で ORDER BY 句の代わりに句を使用します。 HAVING 句を使用すると、集計データに条件を適用し、条件を満たさないグループを除外できます。

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;

条件を HAVING 句に置くことで、グループの前に結果が確実にフィルタリングされます。操作による適用が適用されます。これにより、各作成者の最新の投稿のみが結果に含まれることが保証されます。

追加の考慮事項:

グループ化前の順序付けのこの方法は MySQL に固有であり、機能しない可能性があります。 Postgres や SQL Server などの他のデータベースでも。これらのデータベースの場合、サブクエリの使用や最大値テーブルとの結合などの代替アプローチが必要になる場合があります。

ただし、大規模なデータセットの場合、順序付けを伴う GROUP BY の使用が効率的であることに注意することが重要です。 MySQL、特にデータがグループ間で均等に分散されていない場合。したがって、パフォーマンスを最適化するために、適切な場合はこのメソッドを使用することをお勧めします。

以上がMySQL でグループ化する前に日付で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。