我有以下表格结构
我希望结果是
这是我试过的问题

select * from table where userid IN(201,202,203,204,205)
group by userid
order by messageid desc

但我无法根据messageid获取最新记录。
我需要在一个查询中编写这个,因为我必须使用ORDERBY子句
请解释我的错误并提出解决办法

最佳答案

如果我正确理解您的问题,您可以使用maxmessageid将表连接到自己:

select t.messageid, t.userid, t.data
from yourtable t
  join (
    select max(messageid) maxmessageid, userid
    from yourtable
    where userid in (201,202,203,204,205)
    group by userid
    ) t2 on t.userid = t2.userid and t.messageid = t2.maxmessageid
order by t.messageid desc

SQL Fiddle Demo
编辑:下面是使用IN的另一种方法:
select messageid, userid, data
from yourtable
where messageid in (
    select max(messageid) maxmessageid
    from yourtable
    where userid in (201,202,203,204,205)
    group by userid
    )
order by messageid desc

More Fiddle

关于mysql - 什么是mysql查询,以便由存储在同一表中的一组用户获取最近添加的消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19431874/

10-11 02:44