原来的语句为
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
结果不正确,被大佬骂了,但是大佬也不教我
后面我找到一位大神写的博客,原博客请移步
mysql group by 组内排序方法
最后的语句
SELECT a.* from r_read_record as a right join
(SELECT id,user_id,higher_id,max(create_at) as maxcreate_at
FROM r_read_record
WHERE r_read_record.user_id = $user_id
GROUP BY r_read_record.higher_id) as b
on a.higher_id=b.higher_id and a.create_at=b.maxcreate_at order by a.higher_id asc;
这个问题算是解决了