分类 mysql基础 下的文章

在写Sql语句查询时,有时同时用到分组 GROUP BY 和排序 ORDER BY, 如

SELECT id,card_no,add_datetime FROM table WHERE 1 GROUP BY card_no ORDER BY add_datetime DESC 

查询结果只是返回分组后的第一条数据,而不是分组后组内时间最新的第一条数据

我的解决办法是使用 子查询+DISTINCT 查询,如下:

SELECT * FROM (SELECT DISTINCT id,card_no,add_datetime FROM table WHERE 1 ORDER BY add_datetime DESC) tmp GROUP BY card_no

具体原理未知,但是能查出所期望的结果