MySQL分组前如何对数据进行排序?

Linda Hamilton
发布: 2024-11-11 18:29:02
原创
1000 人浏览过

How to Order Data Before Grouping in MySQL?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板