我有两张桌子 - 'LeftTable'和'RightTable'。这些数据如下所示:
LeftTable
T1 | C45
T1 | C46
T1 | C47
RightTable
T9 | C45
T9 | C47
T10| C45
T10| C46
T10| C47
T10| C52
我正在尝试编写一个SQL查询,告诉我右表中的哪些'T'条目包含其中的所有'C'条目,就像在LeftTable中一样
LeftTable只有一种'T'条目。因此,因为LeftTable有C45,C46,C47 - 我想要来自RightTable的'T'值,它们具有相应的'C'作为C45 C46 C47。
因此,在这种情况下,它应该返回T10(它有三个)。但是,它不应该返回T9(因为它只有两个来自LeftTable的常见'C'值)
答案 0 :(得分:0)
这个问题比我最初想的更有趣。 : - )
假设RightTable(rt)上有一个组合的唯一键,这将起作用:
select rt.id , count(*) right_count
from rt join lt on rt.val=lt.val
group by rt.id
having count(*) = (select count(distinct val) from lt)
使用:
rt = RightTable
lt = LeftTable
id = T-field
val = C-field
我希望这会有所帮助。 拉尔夫
答案 1 :(得分:0)
需要这样的东西:
SELECT T-Value FROM RT
当
(从LT存在中选择C值 (为每个t值选择C-VALUEs FROM RT) )