2016-11-26 26 views
0

我需要檢查參與者A和參與者B之間是否曾經私下溝通。如果他們兩個涉及聊天,我不想那個對話。如何選擇只有兩名參與者參與的對話?

那麼如何構建我的查詢,它將檢查count(participant_id) == 2

我試過,但它給了錯誤:

select conversation_id from chat where participant_id == A AND participant_id == B AND COUNT(participant_id) == 2 

表結構 enter image description here

+0

嘗試 - SELECT COUNT(*)C,'conversation_id' FROM'chat' GROUP BY'participant_id' HAVING C = 2 –

+0

@RohanKhude,它不返回任何東西 – 112233

+1

顯示你的表結構 –

回答

2
SELECT 
     conversation_id 
FROM chat 
GROUP BY 
     conversation_id 
HAVING COUNT(DISTINCT participant_id) = 2 
AND MAX(participant_id) IN (A,B) 
AND MIN(participant_id) IN (A,B) 

試圖評估由聚合函數計算,如計數值時,HAVING子句是必需的。您只需計算對話中涉及的唯一ID即可。

順便說一下,如果此查詢返回的任何內容可能意味着您沒有任何會話符合配置文件。

+0

我試過了你的查詢,但它返回包含這兩個用戶的羣聊。我只想私人聊天..請參考我的表上面 – 112233

+0

什麼表?它在哪裏? –

+0

更改後的查詢,請用MIN和MAX計算而不是where子句嘗試。 –

相關問題