Mysql 按私有(private)消息列表分组/排序

标签 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

最佳答案

所以你的结果应该只返回一条消息?而且这一条消息应该是最后发送的一条消息?那么这个查询就可以工作

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

关于Mysql 按私有(private)消息列表分组/排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34873580/

相关文章:

php - 对 MySQL 表行中的值求和的有效方法

php - 如果数据库显示--无--显示下拉菜单,如果其他则显示输入的数据

php - 下载Xampp并设置一个良好的工作环境?

MYSQL - 更新一个表时自动删除第二个表中的行

php - MySQL 多参数

Amazon ec2 用户 LAMP 中未检测到 MySQL

php - 使用 php 在 mysql 表中获取总记录数的最佳方法是什么?

mysql - 如何使用 xmerl (erlang) 将元组列表转换为 XML 格式

mysql - 无法远程连接到MySQL服务器

mysql - 在内部连接Mysql中找到最近的时间