MySQL Order before Group by
使用 MySQL 從資料庫擷取資料時,通常需要依照特定順序對結果進行排序。但是,當使用 GROUP BY 子句對資料進行分組時,結果通常在分組後進行排序,這可能不會產生預期的結果。
在提供的範例中,查詢旨在檢索最新的貼文對於每個作者並對結果進行分組,但 GROUP BY 子句會導致貼文在分組後排序,從而產生不正確的結果。
要解決此問題,另一種方法是使用子查詢在執行分組操作之前確定每個作者的最新發布日期。這可以使用以下修改後的查詢來實現:
SELECT wp_posts.* FROM wp_posts JOIN ( SELECT g.post_author, MAX(g.post_date) AS post_date FROM wp_posts AS g WHERE g.post_status = 'publish' AND g.post_type = 'post' GROUP BY g.post_author ) AS t ON wp_posts.post_author = t.post_author AND wp_posts.post_date = t.post_date ORDER BY wp_posts.post_date DESC;
此查詢首先使用子查詢來計算每個作者的最新發布日期並將其儲存在臨時表 t 中。然後,它將 wp_posts 與 t 連接起來,以選擇與最新發布日期相符的行,並按作者對結果進行分組。最後,將結果按發布日期降序排序,以獲得每個作者的最新貼文。
透過使用此方法,您可以確保貼文在分組之前已排序,從而提供所需的結果不會損害分組操作的完整性。
以上是MySQL分組前如何對資料進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!