我有这个表用于用户之间的消息
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