MySQL中用group by获取分组最新一条数据时group by不能排序

原来的语句为

SELECT id, user_id,higher_id,type,first_read,create_at,update_at
 FROM r_read_record
 WHERE r_read_record.user_id = $user_id 
 GROUP BY r_read_record.higher_id 
 ORDER BY r_read_record.create_at DESC

注:这里因为我用php,所以参数带$.
在mysql中同时使用group by和order by查询出来的结果时不会按照order by的规则进行排序的
即使使用子查询先排序也不行,结合外面的语句就会报错,
正确的打开方式为

SELECT id, user_id,higher_id,type,first_read,max(create_at)create_at,update_at 
FROM r_read_record 
WHERE r_read_record.user_id = $user_id 
GROUP BY r_read_record.higher_id 
ORDER BY r_read_record.create_at DESC

结果正确OK

发布了38 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_35510729/article/details/89924268