SQL匹配从左表到右表组的所有值

时间:2013-07-11 20:38:26

标签: sql join group-by left-join

我有两张桌子 - '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'值)

2 个答案:

答案 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) )