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

Mysql 选择其中column1或column2等于id,但按行的其他值分组,mysql,Mysql,我有这个表,用于用户之间的消息 id |sender |receiver -------------------- |1 |2 |3 |1 |1 |4 |2 |1 我想选择t.sender或t.receiver等于1的所有行(我正在为其搜索消息的用户),但按行的其他值分组(按其他用户分组) 在此示例中,user1的结果应包含按user2、user3和user4值分组的3行。一种方法是使用union all获取它们。首先,需要获取

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

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

这取决于你想如何分组。如果要在搜索前进行分组,请使用having子句,否则,如果要仅根据发送方或接收方中具有1的结果进行分组,请使用where子句(可能作为子查询)。按user2、user3、user4值分组的
是什么意思?你是说order by?我想获取发送给用户1或用户1发送的用户。在这个例子中,我只需要3行列名,用值2、3和4将其称为“target”,但这将为用户2返回两行,不是吗?