如何从 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
  )