2016-02-21 93 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

如果已經解決了您的問題,您想要另一種解決方案嗎? –