我们在学习时老师就讲mysql 的group by 没有排序的功能的并且不能与order by 同时使用,那么如果我非要排序怎么办呢,下面我来给大家介绍解决mysql group by不能排序这个问题.
常用的方法,代码如下:
select * from table group by column_name order by id desc
是不能得到每个分组里面的id的最大的值的.
解决方法,有人写出下面的语句:
SELECT *,max(dateline) as max_line FROM posts GROUP BY tid ORDER BY dateline DESC LIMIT 10
这条语句的没错是选出了最大发布时间,但是你可以对比一下 dateline 和 max_dateline 并不相等,可能有相当的情况,就是分组的目标记录只有一条的时候.
正确的办法是,代码如下:
- SELECT *,max(dateline) as max_line FROM posts GROUP BY tid HAVING dateline=max(dateline)ORDER BY
-
- dateline DESC LIMIT 10
-
-
-
- select * from (select * from table order by id desc ) t group by column_name order by id desc
这样就会得到每个分组里面最大的id值了,并且最后的 order by id desc 是再对这些得到的id的值进行排序. |