MySQL Order before Group By
問題:
問題:找到最新作者並找到最新作者並將結果分組,我們需要在按操作應用程式分組之前按日期對貼文進行排序。但是,給定的查詢在分組後對結果進行排序,這可能會導致不正確的結果。
解決方案: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子句而不是 group by 操作中的 ORDER BY。 HAVING 子句讓我們對聚合資料套用條件,並排除不符合條件的群組。
透過將條件放在 HAVING 子句中,我們確保結果在群組之前被過濾通過操作應用。這保證了結果中只包含每個作者的最新帖子。
其他注意事項:這種分組前排序方法特定於 MySQL,可能不起作用在其他資料庫中,例如 Postgres 或 SQL Server。對於這些資料庫,可能需要使用替代方法,例如使用子查詢或連接最大值表。 但是,需要注意的是,使用帶有排序的 GROUP BY 對於大型資料集來說非常有效MySQL,特別是當資料在群組之間分佈不均勻時。因此,建議在適當的時候使用此方法來優化效能。以上是MySQL分組前如何依日期排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!