天天看点

MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法

假如现在有一张表table,如下:

MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法

如果我们想查询出来zhang和wang最新日期的记录

如果我们直接使用:

SELECT * FROM table GROUP BY name ORDER BY date;

查询结果如下:

MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法

很明显,这不是我们想要的数据,原因是msyql已经的执行顺序是

写的顺序:select ... from... where.... group by... order by.. 

执行顺序:from... where...group by.... select ... order by...

所以在order by拿到的结果里已经是分组的完的最后结果。 

由from到where的结果如下的内容。 

MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法

到group by时就得到了根据category_id分出来的多个小组 

MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法

到了select的时候,只从上面的每个组里取第一条信息结果会如下

MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法

即使order by也只是从上面的结果里进行排序。并不是每个分类的最新信息。 

回到我的目的上 --分类中最新的信息 

根据上面的分析,group by到select时只取到分组里的第一条信息。

这里可以使用子查询的方法

SELECT * FROM (SELECT * FROM table ORDER BY date desc) table1  GROUP BY name;

MySQL——关于MySQL分组查询group by和order by获取最新时间内容的方法

继续阅读