2011-12-20 95 views
0

我的表格基本上是一个消息表。我有以下字段:在MySQL中,如何根据两个字段的值来对行进行分组?

ID:整数,SENDER_ID:整数,receiver_id:整数消息:文本

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

说,例如:

  • 用户ID 10发送3个消息给用户12
  • 用户12发送2个消息给用户10
  • 用户3发送1个消息发送到用户4
  • 用户4发送1条消息发送给用户3

我想要的结果显示10和12之间交换的消息的数量,在这种情况下,应该有5。

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

如果可能,全部在一个查询中。

我希望我有道理。

+0

有一种方法,但是你想看看,如果UID 10和12交换了5条消息,那么UID 12和10也交换了5条消息(反之亦然) – rabudde 2011-12-20 11:05:15

回答

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) 
相关问题