2017-06-16 50 views
0

我有這樣的一個表:SQL - 符合所有標準的返回值

Table1 
site | value 
a | banana 
b | banana 
c | banana 
a | fred 
c | quetzal 
a | quetzal 

比方說,我有一組網站的行值

a 
b 
c 

如何找到什麼樣的價值觀表1有三個a,b和c三個網站嗎?

我知道

SELECT value 
FROM Table1 
WHERE site IN (SELECT site FROM chosen_sites) 

將返回存在選擇的網站中至少一個的所有值,但如何選擇這三個的人?

回答

2

關閉我的頭頂,我覺得是這樣的:

select t.value 
from Table1 t 
join chosen_sites s on s.site = t.site 
group by t.value 
having count(distinct t.site) = (select count(*) from chosen_sites) 

編輯:seems to work

1

您可以用cross join網站所有不同的價值觀和left join表1到這一點,並檢查計數。

select v.value 
from table2 t2 --this is your table2 with all sites 
cross join (select distinct value from table1) v 
left join table1 t1 on t1.site=t2.site and t1.value=v.value 
group by v.value 
having count(t2.site)=count(t1.site)