我需要的東西似乎有點複雜,但後來我又不擅長SQL。基本上我有一張存儲對話參與者的表格。我需要一個查詢,它將使用兩個提供的用戶ID來確定是否存在僅包含兩個給定用戶的對話。包含超出這兩個用戶的其他用戶的對話不應被計入 - 兩個給定用戶之間只進行一對一的對話。SQL:根據兩個給定值精確選擇具有匹配ID的兩行
這裏是我的SQLfiddle:http://sqlfiddle.com/#!9/284e1/33/0
而我正在進行的查詢這是不是做的伎倆:
SELECT * FROM mybb_conversation_participants WHERE conversation_id IN ( SELECT conversation_id FROM mybb_conversation_participants WHERE (user_id = 6 OR user_id = 11) GROUP BY conversation_id HAVING COUNT(*) = 2 );
我不認爲我瞭解HAVING COUNT(*) = 2
部分,因爲此查詢將返回包含這兩個用戶的所有對話,即使該對話中也存在其他用戶。同樣,應該只選擇兩個提供的用戶之間的1對1對話,否則查詢應該不選擇任何內容。例如,在上面的SQLfiddle中,只有conversation_id
爲12
或19
的行應該返回,因爲所有其他匹配都包含兩行以上的行。
這就是我希望HAVING
聲明會做,但顯然不是。
任何想法?
對不起,我之前我看到您的編輯評論。這非常完美,非常感謝您的快速響應! –