如何从mysql表中选择最新的日期记录集

时间:2017-03-21 09:28:35

标签: mysql group-by sql-order-by

您好我将聊天数据存储在一个表(不是我的设计)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

这似乎是正确的方向但是......错了,因为它没有给我最新的条目,它给了我每个接收器只有一个条目,这就是我想要的但它不是最后一个条目,它似乎是一个随机条目。

有人可以帮忙吗?

2 个答案:

答案 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