gpt4 book ai didi

SQL,只有匹配所有外键值才能返回记录?

转载 作者:行者123 更新时间:2023-12-04 18:24:03 24 4
gpt4 key购买 nike

我有两张 table

Table A
type_uid, allowed_type_uid
9,1
9,2
9,4
1,1
1,2
24,1
25,3

Table B
type_uid
1
2

从表 A 我需要返回
9
1

使用 WHERE IN条款我可以返回
9
1
24

最佳答案

SELECT
TableA.type_uid
FROM
TableA
INNER JOIN
TableB
ON TableA.allowed_type_uid = TableB.type_uid
GROUP BY
TableA.type_uid
HAVING
COUNT(distinct TableB.type_uid) = (SELECT COUNT(distinct type_uid) FROM TableB)

将两个表连接在一起,这样您就只有与您感兴趣的类型匹配的记录。

TableA.type_uid 对结果集进行分组.

检查每个组是否有相同数量的 allowed_type_uid TableB.type_uid 中存在的值.
distinct必填 仅限 如果任一表中可能有重复记录。如果 两个表只有唯一的值, distinct可以删除。

还应该注意的是,随着 TableA 大小的增长,这种类型的查询会迅速降低性能。这是因为索引在这里实际上并没有太大帮助。

它仍然是一种有用的结构,但不是我建议实时运行查询的结构。而是使用它来创建另一个持久化/缓存的结果集,并仅在需要时使用它来刷新这些结果。

关于SQL,只有匹配所有外键值才能返回记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10103174/

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