我有以下表格结构
我希望结果是
这是我试过的问题
select * from table where userid IN(201,202,203,204,205)
group by userid
order by messageid desc
但我无法根据messageid获取最新记录。
我需要在一个查询中编写这个,因为我必须使用ORDERBY子句
请解释我的错误并提出解决办法
最佳答案
如果我正确理解您的问题,您可以使用max
的messageid
将表连接到自己:
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/