mysql - 选择 column1 或 column2 等于 id,但按行的其他值分组

标签 mysql

我有这张表用于用户之间的消息

id |sender |receiver 
--------------------
   |1      |2
   |3      |1
   |1      |4
   |2      |1

我想选择 t.sender 或 t.receiver 等于 1 的所有行(我正在为其搜索消息的用户),但要按行的其他值分组(按其他用户分组)。

在此示例中,user1 的结果应包含按 user2、user3 和 user4 值分组的 3 行。

最佳答案

一种方法是使用 union all 获取它们。首先,您需要获取用户发送的消息,并将这些结果与同一用户收到的消息合并。

select receiver, count(1), 'Sending' from messages where sender = 1 group by receiver
union all
select sender, count(1), 'Receiving' from messages where receiver = 1 group by sender

关于mysql - 选择 column1 或 column2 等于 id,但按行的其他值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986199/

相关文章:

mysql - Mysql Text DataType 是否保留任何内存空间

mysql - 如何在数据库中存储音乐标签?

MySQL创建外键时显示成功消息,但实际上并没有创建外键

php - 在每个 if 循环结果结束后添加一条回显线

php - 显示表中列的总和

java - 获取 org.hibernate.exception.JDBCConnectionException : could not execute query even through JNDI

Mysql查询左连接错误

PHP根据两行从数据库中检索不同的数据

mysql - Doctrine2 在 Symfony2 中抛出异常

php - 如何扩展一个表中的逗号分隔字段并将其复制到使用相同唯一 ID 的第二个表中的多个字段