BinaryZs 2021-06-13 20:13 采纳率: 0%
浏览 24

关于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)函数执行成功,然后对该列排序后的数据。

 

 

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 18:12
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?

问题事件

  • 修改了问题 9月7日

悬赏问题

  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制