我有这个MySQL数据库架构:用户有很多对话,对话有很多用户(多对多关联)。所以我有表users
,表conversations
和名为participants
的联接表,其中包含user_id
和conversation_id
字段(外键)。
现在我需要选择至少2个未被禁止的用户的所有会话(用户表具有banned
布尔字段。
有人可以帮我查询吗?
感谢您的帮助。
答案 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