2016-02-21 64 views
-3

我有两个表如下选择数据:SQL查询从两个表中

表1:

user_id  ancestry 
--------- ---------- 
1  England 
1  Ireland 
2  France 
3  Germany 
3  Poland 
4  England 
4  France 
4  Germany 
5  France 
5  Germany 

表2:

country  
--------- 
England 
Germany 
France 

我需要写一个SQL查询,将选择把所有那些拥有祖先祖先每个国家的用户ID都列出来。我可以如何实现这一点。

+0

你能告诉我们你迄今尝试过? – mech

回答

0

DISTINCT是需要的情况下,一个user_id可以从同一个国家有多个祖先

SELECT user_id 
FROM Table1 
GROUP BY user_id 
HAVING COUNT(DISTINCT ancestry) = (SELECT COUNT(*) FROM Table2) 

编辑: 我知道table1可以有不同的国家比像table2Ireland

所以,你可能需要使用JOIN,看看有多少匹配存在

SELECT T1.user_id 
FROM Table1 T1 
JOIN Table2 T2 
    ON T1.ancestry = T2.country 
GROUP BY T1.user_id 
HAVING COUNT(DISTINCT T1.ancestry) = (SELECT COUNT(*) FROM Table2) 
+0

谢谢。它正在正常工作。有没有其他办法可以做到这一点? –

+0

如果已经解决了您的问题,您想要另一种解决方案吗? –