グループ化前の 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 サイトの他の関連記事を参照してください。