您好我将聊天数据存储在一个表(不是我的设计)MYSQL中!
Table: chat
id (long)
lastWrite (date)
messageStatus (varchar) //can be send , received, read
toName(varchar) //receiver
我的问题是我不知道如何获得所有不同接收器的最新(最新的lastWrite时间戳)列表(每个接收器只有一行)。目标应该是从一个列表中的所有接收者显示最新的messageStatus。
我尝试了:select * from (
select c.* from chat c where organizationId = 885 order by c.lastWrite desc
) as tmp group by tmp.toName
这似乎是正确的方向但是......错了,因为它没有给我最新的条目,它给了我每个接收器只有一个条目,这就是我想要的但它不是最后一个条目,它似乎是一个随机条目。
有人可以帮忙吗?
答案 0 :(得分:0)
SELECT toName, MAX(lastwrite), messageStatus
FROM chat
GROUP BY toName, messageStatus
答案 1 :(得分:0)
因此,您将获取每个toName的最新消息的所有列
status
或者如果你需要ondlu messageStatus
select *
from chat
where ( toName, lastwrite) in (
SELECT toName, MAX(lastwrite)
FROM chat
GROUP BY toName