MySQL - 查询选择至少2个未禁止用户的所有会话

时间:2014-06-30 12:32:59

标签: mysql sql select join group-by

我有这个MySQL数据库架构:用户有很多对话,对话有很多用户(多对多关联)。所以我有表users,表conversations和名为participants的联接表,其中包含user_idconversation_id字段(外键)。

现在我需要选择至少2个未被禁止的用户的所有会话(用户表具有banned布尔字段。

有人可以帮我查询吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT c.* 
FROM conversations c 
INNER JOIN (SELECT p.conversation_id 
            FROM participants p 
            INNER JOIN users u ON p.user_id = u.user_id AND u.banned = 0
            GROUP BY p.conversation_id 
            HAVING COUNT(DISTINCT p.user_id) >= 2 
          ) AS A ON c.conversation_id = A.conversation_id