gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:29:29 26 4
gpt4 key购买 nike

抱歉,如果标题有点错误,现在已经卡在这个问题上一段时间了,我的大脑此时已经非常疲惫了..

我已将问题简化为基础知识。有2张 table ..

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 的行时,查询才会返回结果。同样重要的是,如果表 B 中存在具有相同 table_a_fk 的额外条目(即用户 10,11,12,13,14),则不会返回。它需要完全匹配。

我开始认为我所需要的仅仅在 MYSQL 中是不可能的,我需要使用更一般的搜索来处理行...希望你们中的一位 SQL 专家能证明我是错的;)

提前非常感谢您的帮助和建议

更新:刚刚意识到此查询中甚至可能不需要表 A...就好像 user_ids 全部匹配,那么 table_a_fk 的值将与从表 A 中获取的值相同。

就像我说的,我的大脑无法正常工作啊哈...感谢您的帮助!

最佳答案

这是一个 set-with-set 查询的示例。我喜欢使用 group byhaving 来处理这个问题:

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以匹配您关心的用户列表以及此类用户的数量。这假设表中没有重复项。

关于MYSQL - 当不同表上的所有行都存在时查找表上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com