php - MySQL 选择多行/组多/顺序

标签 php mysql chat

我正在构建一个聊天系统,用户 A 可以在其中与用户 B 讨论主题 X 或 Y。

我的表如下所示:

Message ID | message | sender | receiver | topic
1            Helo      1        2           X
2            Lorem     2        1           X
3            Foo       1        2           Y
4            Bar       2        1           X
5            Test      2        1           Y
6            Hello2    1        3           X

所以我想获取每个用户和主题的用户 1 最后 6 个对话的列表。目前我得到了

SELECT messageid, sender,topic, receiver AS friend FROM table WHERE sender = 1 || receiver = 1 GROUP BY topic,friend ORDER BY id DESC LIMIT 0,6

但这不会选择最后消息。因为之后我创建了这些条目的列表,并且不想在顶部显示最后的对话...

在此示例中,我需要一个如下所示的列表:

 Message ID | sender | topic| friend
 6            1         X      3
 5            2         Y      1
 4            2         X      1

通过以下选择就可以了! select * from (从选项卡中选择 Message_ID、发送者、主题、接收者 AS friend ,其中发送者 = 1 || 接收者 = 1 按 Message_ID desc 排序) temp 按主题分组 order by Message_ID desc

有效!

最佳答案

如果您想要给定用户的最后一条消息 id 的 ID:

select (case when sender = 1 then receiver else sender end) as other,
       topic, max(messageid)
from messages
where sender = 1 or receiver = 1
group by (case when sender = 1 then receiver else sender end) ;

然后您可以使用它来获取所有信息:

select m.*
from messages m join
     (select (case when sender = 1 then receiver else sender end) as other,
             topic, max(messageid) as messageid
      from messages
      where sender = 1 or receiver = 1
      group by (case when sender = 1 then receiver else sender end) 
     ) mm
     on mm.messageid = m.messageid;

关于php - MySQL 选择多行/组多/顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526439/

相关文章:

javascript - php字符串比较搜索仅返回一个条目而不返回正确的条目

php - 在 PHP 的类内部使用时,traits 中的静态变量如何不失去其值(value)?

java - org.hibernate.AnnotationException : mappedBy reference an unknown target entity property. 有错误 : java. lang.NullPointerException

javascript - 如何查找不在名册中的用户的存在?

python - 如何在扭曲的 python 中从服务器发送列表中的内容?

php - 在mysql中设置var并在新查询中使用

php - 显示评论

mysql - mysql : com. mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 中出现错误:表 'db.studentgroup' 不存在

c# - 数据表循环性能

android - 消息通知APP数据库结构设计