当group by遇到order by

        group by 和 order by 一起使用时,会先使用group by 分组,并取出分组后的第一条数据,所以后面的order by 排序是根据取出来的第一条数据来排序的,但是第一条数据不一定是分组里面的最大数据。

解决方案:

可以先排序,再分组,再排序:使用子查询。

SELECT
  r.id,
  r.uid,
  r.age ,
  r.datatime
FROM (SELECT
    id,
    uid,
    age ,
    datatime
  FROM student
  ORDER BY age DESC) r
GROUP BY r.uid
ORDER BY r.age DESC;

        注意:group by 比order by先执行,order by不会对group by 内部进行排序,只会在分组完成之后根据每组的第一条数据为组进行排序,而因为组中的数据并未排序,所以最终对组进行的排序结果可能不是我们想要的,所以要先排序 再分组 再排序。

你可能感兴趣的:(mysql)