愿每一次的分享,都将值得期待

今日推荐:

假如现在有一张表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;

关注【挨踢小子】,让我们一起成长

适合分享 | 值得留言