2015-10-12 20 views
2

我需要在存儲聊天消息的相當簡單的表上執行復雜查詢。該表具有以下的列:使用MySQL在聊天消息數據庫中獲取公共連接

|message_id|from|to|body| 

fromto領域包含只是編碼爲整數用戶ID。在應用程序中,如果用戶A已向用戶B發送消息,則用戶A和用戶B之間存在對話,反之亦然。我現在的問題是,對於用戶A,我需要查詢AB有關對話的所有人。

因此,舉例來說,如果用戶A與用戶BD和用戶B的對話與用戶C交談,我需要查詢的AB所有普通用戶,結果集將只包含C。由於用戶B與用戶D沒有對話,因此不包括D

我有MySQL的經驗,但我不知道從哪裏開始。我更喜歡在一次運行中執行這個(複雜)查詢,但是我想知道是否存在具有多個查詢的高效算法來執行此任務。

任何幫助將不勝感激!

+0

當A與B和d一multichat,如果A發送一個消息,你應該插入2列在表中:'ROW1 = 'A' ,'B','HelloWorld';''row2 ='A','D','HelloWorld';'這樣你可以追蹤每一條消息。 –

+0

所以....是我的回答錯誤還是你忘了這個問題? – GGG

+0

@GGG:我沒時間看你的答案,但絕對會! – Devos50

回答

1

你可以使用子查詢爲prupose:

SELECT to FROM Test WHERE from = 'A' AND to IN (SELECT to FROM Test WHERE from = 'B')