MYSQL-在不同表上的所有行都存在时查找表上的值

MYSQL-在不同表上的所有行都存在时查找表上的值,mysql,sql,database,join,Mysql,Sql,Database,Join,很抱歉,如果标题有点错,我已经在这上面停留了一段时间,我的大脑在这一点上真的很疲惫 我已经把这个问题简单化了。有两张桌子 TABLE A ------------ -id TABLE B ------------- -table_a_fk -user_id 我正在尝试使用用户ID列表查找表A的ID。。。并且仅当表B中所有用户的条目都存在时 因此,如果user_id为10,11,12,则只有在表B中有用户10,11,12的行与表_a_fk相同时,查询才会返回结果。同样重要的是,如果有额外的条目

很抱歉,如果标题有点错,我已经在这上面停留了一段时间,我的大脑在这一点上真的很疲惫

我已经把这个问题简单化了。有两张桌子

TABLE A
------------
-id

TABLE B
-------------
-table_a_fk
-user_id
我正在尝试使用用户ID列表查找表A的ID。。。并且仅当表B中所有用户的条目都存在时

因此,如果user_id为10,11,12,则只有在表B中有用户10,11,12的行与表_a_fk相同时,查询才会返回结果。同样重要的是,如果有额外的条目(即用户10、11、12、13、14)与表B中的表_a_fk相同,则不会返回。。它需要精确匹配

我开始认为我所需要的仅仅在MYSQL中是不可能的,我需要用更通用的搜索来处理这些行。。。希望你们中的一位SQL大师能证明我错了;)

非常感谢您的帮助和建议

更新:刚刚意识到在这个查询中甚至不需要表A。。。如果用户_id都匹配,那么表_a_fk的值将与从表a获取的值相同


就像我说的我的大脑不工作啊哈。。。谢谢你的帮助

这是一个集合查询的例子。我喜欢使用
groupby
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;

您需要调整列表中的
3
,以匹配您关心的用户列表和此类用户的数量。这假设表中没有重复项。

回答得很好。。下一次,我将逐一查看一些查询。。所有测试和工作正常,现在无论如何。。非常感谢!