在MySQL中,如何基于两个可以互换的字段对行进行分组?

时间:2011-12-20 10:57:42

标签: mysql

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

id:integer,sender_id:integer,receiver_id:integer,message:text

我想要做的是为每对发送者和接收者获取COUNT行消息。

比如说:

  • 用户ID 10向用户12发送了3条消息。
  • 用户12向用户10发送了2条消息
  • 用户3向用户4发送了1条消息
  • 用户4向用户3发送了1条消息

我希望结果显示10到12之间交换的消息数,在这种情况下,应该有5个。

同样对于用户3和4,应该表明他们已经交换了2条消息。

尽可能在一个查询中。

我希望我有道理。

1 个答案:

答案 0 :(得分:0)

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)