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