常用的方法
代码如下 | 复制代码 |
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的值进行排序
时间: 2024-11-09 05:51:26