我有这个表用于用户之间的消息
id |sender |receiver
--------------------
|1 |2
|3 |1
|1 |4
|2 |1
我想选择t.sender或t.receiver等于1的所有行(我正在搜索消息的用户),但要按行的其他值分组(由其他用户分组)。
在此示例中,user1的结果应包含按user2,user3和user4值分组的3行。
答案 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