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

时间:2015-06-22 17:28:28

标签: mysql

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

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

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

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

1 个答案:

答案 0 :(得分:1)

一种方法是使用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