gpt4 book ai didi

SQL 查询 - 确保 () 中的每个值都存在一行

转载 作者:行者123 更新时间:2023-12-02 22:13:44 25 4
gpt4 key购买 nike

目前正在努力寻找验证 2 个表的方法(有效地验证表 A 的大量行)

我有两张 table

表A

 ID 
A
B
C

表格匹配

ID Number
A 1
A 2
A 9
B 1
B 9
C 2

我正在尝试编写一个 SQL Server 查询,该查询主要检查以确保表 A 中的每个值都存在一行用于变量值集 (1, 2,9)

上面的示例是不正确的,因为 t 应该为 A 中的每个记录提供与每个值 (1,2,9) 匹配的 Table 中的对应记录。最终目标是:

表格匹配

ID Number
A 1
A 2
A 9
B 1
B 2
B 9
C 1
C 2
C 9

我知道这很令人困惑,但一般来说,对于(某个集合)中的每个 X 来说,表中应该有一个相应的记录匹配。我显然已经简化了事情。

如果你们都需要澄清,请告诉我。

最佳答案

用途:

  SELECT a.id
FROM TABLE_A a
JOIN TABLE_B b ON b.id = a.id
WHERE b.number IN (1, 2, 9)
GROUP BY a.id
HAVING COUNT(DISTINCT b.number) = 3

COUNT 中的 DISTINCT 确保重复项(即:A 在 TABLE_B 中具有值为“2”的两条记录)不会被错误地视为正确记录。如果 number 列具有唯一键或主键约束,则可以省略。

HAVING COUNT(...) 必须等于 IN 子句中提供的值的数量.

关于SQL 查询 - 确保 () 中的每个值都存在一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918351/

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