2011-12-20 152 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) 
相關問題