Nix*_*Nix 5 sql t-sql sql-server sql-server-2008
目前正在努力寻找一种方法来验证2个表(有效地为表A提供大量行)
我有两张桌子
表A.
ID
A
B
C
Run Code Online (Sandbox Code Playgroud)
表匹配
ID Number
A 1
A 2
A 9
B 1
B 9
C 2
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个SQL Server查询,基本上检查以确保表A中的每个值都存在一个变量值集的行(1,2,9)
上面的示例是不正确的,因为对于A中的每个记录,t应该具有匹配的每个值(1,2,9)的表中的相应记录.最终目标是:
表匹配
ID Number
A 1
A 2
A 9
B 1
B 2
B 9
C 1
C 2
C 9
Run Code Online (Sandbox Code Playgroud)
我知道它令人困惑,但一般来说,对于每个X in(某些集合),表格中应该有相应的记录匹配.我显然简化了一些事情.
如果您需要澄清,请告诉我.
OMG*_*ies 13
使用:
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
Run Code Online (Sandbox Code Playgroud)
COUNT中的DISTINCT确保将重复项(IE:A在TABLE_B中具有值为"2"的两个记录)错误地视为正确记录.如果是,它可以省略number
列具有唯一或主键约束,则它.
在HAVING COUNT(...)
必须等于在提供值的数量IN
子句.
归档时间: |
|
查看次数: |
3977 次 |
最近记录: |