在MySQL中,如何根据两个值可以交换的字段对行进行分组?

在MySQL中,如何根据两个值可以交换的字段对行进行分组?,mysql,Mysql,我的表基本上是一个消息表。我有以下字段: id:integer,发送方id:integer,接收方id:integer,消息:text 我想做的是获取每对发送方和接收方的消息行数 比如说: 用户ID 10向用户12发送了3条消息。 用户12向用户10发送了2条消息 用户3向用户4发送了1条消息 用户4向用户3发送了1条消息 我希望结果显示在10和12之间交换的消息数量,在这种情况下,应该有5条 同样,对于用户3和4,应该显示他们交换了2条消息 如果可能的话,所有的查询都在一个查询中 我希望我有道

我的表基本上是一个消息表。我有以下字段:

id:integer,发送方id:integer,接收方id:integer,消息:text

我想做的是获取每对发送方和接收方的消息行数

比如说:

用户ID 10向用户12发送了3条消息。 用户12向用户10发送了2条消息 用户3向用户4发送了1条消息 用户4向用户3发送了1条消息 我希望结果显示在10和12之间交换的消息数量,在这种情况下,应该有5条

同样,对于用户3和4,应该显示他们交换了2条消息

如果可能的话,所有的查询都在一个查询中

我希望我有道理

SELECT COUNT(*) FROM tablename WHERE sender_id IN (10,12) AND receiver_id IN (10,12)
然而,这将计算他们自己发送给他们的任何消息。例如10->10。确切地说:

SELECT COUNT(*) FROM tablename 
WHERE (sender_id = 10 AND receiver_id = 12) 
OR (sender_id = 12 AND receiver_id = 10)

有一种方法,但是你想知道,如果UID10和12交换了5条消息,UID12和10交换了5条消息,反之亦然