假如现在有一张表table,如下:
如果我们想查询出来zhang和wang最新日期的记录
如果我们直接使用:
SELECT * FROM table GROUP BY name ORDER BY date;
查询结果如下:
很明显,这不是我们想要的数据,原因是msyql已经的执行顺序是
写的顺序:select ... from... where.... group by... order by..
执行顺序:from... where...group by.... select ... order by...
所以在order by拿到的结果里已经是分组的完的最后结果。
由from到where的结果如下的内容。
到group by时就得到了根据category_id分出来的多个小组
到了select的时候,只从上面的每个组里取第一条信息结果会如下
即使order by也只是从上面的结果里进行排序。并不是每个分类的最新信息。
回到我的目的上 --分类中最新的信息
根据上面的分析,group by到select时只取到分组里的第一条信息。
这里可以使用子查询的方法
SELECT * FROM (SELECT * FROM table ORDER BY date desc) table1 GROUP BY name;