关于MySQL 5.5 中group by 和order by问题

SELECT
    department_id
FROM 
    employees 
GROUP BY 
    department_id 
ORDER BY 
    AVG(salary);

问题描述 :

这段sql代码为啥我这执行没问题,返回的数据也是对的..
今天突然发现可以这样,这个是怎么回事?

疑惑:

根据sql执行顺序,order by应该在group by之后的,按说不能使用组函数,以前也一直都是分组后,select列表使用组函数,之后才在order by中使用select中组函数列进行排序。

就像这样:

SELECT 
    department_id,
    AVG(salary) AS ag
FROM 
    employees 
GROUP BY 
    department_id 
ORDER BY 
    ag;

 

然而问题开头的那段sql代码,分组后生成的临时表是没有salary字段的,而且也已经分过组了,order by使用聚合函数应该报错才对,但反而聚合函数执行成功了,返回的数据也是avg(salary)函数执行成功,然后对该列排序后的数据。

 

 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^