很抱歉,如果标题出现错误,那么现在已经停留了一段时间了,我的大脑很好,并且在这一点上真的很疲惫..
我简单地将问题简化为基础知识。有2张桌子..
TABLE A
------------
-id
TABLE B
-------------
-table_a_fk
-user_id
我正在尝试使用user_ids列表找到表A的ID ...并且只有当表B中存在所有用户的条目时...
因此,如果user_ids为10,11,12,则如果表B具有相同table_a_fk的用户10,11,12的行,则查询将仅返回结果。同样重要的是,如果有额外的条目(即用户10,11,12,13,14)在表B中具有相同的table_a_fk,那么这不会返回..它需要是完全匹配。
我开始认为我需要的是不可能只是在MYSQL中我需要用更一般的搜索来处理行...我希望你们中的一个SQL大师来证明我错了;)< / p>
非常感谢您提供帮助和建议
更新:刚刚实现了在此查询中甚至可能不需要表A ...就像user_ids全部匹配一样,table_a_fk的值与从表A中获取的值相同。
就像我说我的大脑不工作ata aha ...感谢您的帮助!
答案 0 :(得分:2)
这是set-with-set查询的示例。我想使用group by
和having
处理此问题:
select table_a_fk
from b
group by table_a_fk
having sum( b.user_id in (10, 11, 12) ) = 3 and
count(*) = 3;
您需要调整in
列表和3
以匹配您关注的用户列表以及此类用户的数量。这假设表中没有重复项。