需要分组后查询出来的是每个组的最大值,这里就需要用到先排序再分组。
例子:
select createdate , userid , houseid from t_house_houselock where id in (select
SUBSTRING_INDEX( GROUP_CONCAT(id ORDER BY createdate DESC) , ',' ,1 ) id from t_house_houselock
GROUP BY houseid)
关键方法 : GROUP_CONCAT() , SUBSTRING_INDEX() , ORDER BY ,GROUP BY
GROUP BY 分组,展示要查询的字段用 GROUP_CONCAT()除了简单的拼接字段外,还可进行内部排序,然后通过 SUBSTRING_INDEX() 获取到GROUP_CONCAT() 拼接字段的第一个值,也就是排序后的第一个。最后拿到的便是每组中的按照一定排序的第一个。