Mysql Group by / Order by private messages list

时间:2016-01-19 09:55:20

标签: mysql

表格结构

Id      User_From        User_To       Time_sent          Message       Message_read
1               1              2       ~TimeLast         ~Message                  0
2               3              2           ~Time             ...                   0
3               3              2       ~TimeLast             ...                   0

我如何创建一个过滤掉所有未读消息的查询,但如果表中有多于1个未读消息,则只显示最后一个消息?

所以我得到这个结果

Id    User_From      User_To     Time_sent       Message       Mesage_read
 1            1            2      LastTime            ~~                 0
 3            3            2      LastTime            ~~                 0

编辑:这很好用

select p.id,user_from,username,message,time_sent,message_read 
    from private_messages p join users u on p.user_from = u.id where p.id in (select max(id) as id from private_messages where user_to = :u1 group by user_from

2 个答案:

答案 0 :(得分:0)

所以你的结果应该只返回一条消息?这一条消息应该是最后发送的消息吗?然后这个查询将起作用

SELECT * FROM table WHERE Message_read 0 
ORDER BY Time_sent LIMIT 1

答案 1 :(得分:0)

使用Mysql LIMIT很简单," Mysql Limit"可以定义您将获得多少结果,例如,如果您使用" LIMIT 1"在你的mysql查询中,你只得到1个结果。

SELECT * FROM table_name WHERE Message_read=0 
ORDER BY Time_sent LIMIT 1

这应该只从表中返回1个结果,其中Message_read = 0且表中最新。