正常逻辑是先order by 排序字段,然后group by 分组字段,这个时候的结果聚合后之前排序字段的值不一定是之前排序的结果的第一条记录,最简单的方法就是把group by id 结果 order by 排序字段(当前记录的主键,group by之后这个排序的作用会保留),然后再group by 分组字段 就能得到自己想要的结果,小伙伴赶快试一下吧(好像是mysql5.7开始支持的,这个没做验证,反正我用的时候这个是可以的)
-- 查询每个用户的最新的浏览记录
SELECT wx_user_id,content,create_date from (
SELECT * from (
SELECT
b.id,
b.wx_user_id,
b.content,
b.create_date
FROM
t_weixin_user_browse b
WHERE
`status` = 'A'
AND retailer_id = 'fd23db2c9ed442b89754e94cbe437a81'
) t GROUP BY id ORDER BY create_date desc
) t2 GROUP BY wx_user_id