请教MySql中使用表子查询时,试着先排序后分组,出现排序失效的原因?-灵析社区

霹雳青

1,今天试着码了一下教程里的题目,是找出每一个班级的身高最高的学生,用的是先order by降序排序所有学生升高,再用 group by分组每一个班级取第一个值,却发现当使用子查询时,得到的仍旧是未排序时的结果,即没有取到最高身高,想问下为何使用子查询时,order by会失效,谢谢! ↑这是建立的表,有班级和身高记录 ↑使用group by查询一切正常,获得的都是每个id班级的第一个记录 ↑使用order by查询一切正常,获得的是按照年龄降序排序的结果 ↑当使用表子查询时,结果和前面单独group by一样,排序并没有生效,下面是代码 select from (select from student_text2 order by height desc) as student_wudi group by c_id;(有人说加limit会有用,试过无效) 尝试着将select范围添加进去,发现并没啥用...select student_wudi. from (select from student_text2 order by height desc) student_wudigroup by c_id; 以上就是遇到的问题,可能对大佬来说是小问题,不过这着实困扰我..希望能得到帮助,谢谢!

阅读量:126

点赞量:0

问AI
5.7的吧?5.7以后对排序的sql解析做了优化,子查询中的排序是会被忽略的5.6你这样写是没问题的,5.7的话需要换一换了,使用聚合函数取出你要的记录再关联原表获取第一条记录或者使用组内排序生成行号后再按行号取第一条也行