我需要的东西似乎有点复杂,但后来我又不擅长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
声明会做,但显然不是。
任何想法?
对不起,我之前我看到您的编辑评论。这非常完美,非常感谢您的快速响应! –