Mysql 从两个表中选择数据的SQL查询

Mysql 从两个表中选择数据的SQL查询,mysql,Mysql,我有两个表格如下: 表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 --------

我有两个表格如下:

表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查询,从表2中的每个国家挑选出所有拥有祖先的用户ID。我如何才能做到这一点。

如果一个
用户ID
可以拥有来自同一国家的多个祖先,则需要使用DISTINCT

SELECT user_id 
FROM  Table1
GROUP  BY user_id 
HAVING COUNT(DISTINCT ancestry) = (SELECT COUNT(*) FROM Table2)
编辑: 我意识到
table1
可以有不同于
table2
的国家,比如
irland

因此,您可能需要使用
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)

你能告诉我们到目前为止你已经尝试了什么吗?谢谢。它工作正常。有没有其他方法我可以做到?如果已经解决了你的问题,你想要另一个解决方案吗?