groupby和orderby顺序

admin 32 0

在SQL查询中,`GROUP BY` 和 `ORDER BY` 的执行顺序是:先执行 `GROUP BY`,然后执行 `ORDER BY`。

`GROUP BY` 用于将结果集按照一个或多个列进行分组,而 `ORDER BY` 用于对结果集进行排序,当你在查询中同时使用这两个子句时,数据库首先会根据 `GROUP BY` 子句中的列对结果集进行分组,然后再根据 `ORDER BY` 子句中的列对每个分组进行排序。

需要注意的是,`ORDER BY` 不会对 `GROUP BY` 内部的分组进行排序,而是根据分组后的第一条数据来排序,如果 `GROUP BY` 后只有一条记录,那么 `ORDER BY` 将无效。

如果你想在分组后获取每个组中的最大或最小值,可以使用聚合函数如 `MAX()` 或 `MIN()`。

以下查询将首先按 `userid` 分组,然后按 `update_time` 降序排序:

SELECT sum(click_num) as totalnum, max(update_time) as update_time, count(*) as totalarticle 
FROM article_detail 
WHERE userid = 1 
GROUP BY userid 
ORDER BY update_time DESC;

为了确保查询结果的正确性,应遵循先 `GROUP BY` 后 `ORDER BY` 的顺序。