我有一个非常狭窄的表:user_id,ancestry.
user_id列是自解释的.
祖先列包含用户祖先欢呼的国家/地区.
用户可以在表上有多行,因为用户可以拥有来自多个国家/地区的祖先.
我的问题是:如何选择其祖先来自多个指定国家/地区的用户?
例如,向我展示所有拥有来自英格兰,法国和德国的祖先的用户,并返回符合该标准的每个用户1行.
什么是SQL?
user_id ancestry
--------- ----------
1 England
1 Ireland
2 France
3 Germany
3 Poland
4 England
4 France
4 Germany
5 France
5 Germany
Run Code Online (Sandbox Code Playgroud)
在上述数据的情况下,我预计结果为"4",因为user_id 4具有来自英格兰,法国和德国的祖先.
提前致谢.
PS澄清:是的,user_id/ancestry列创建一个唯一的对,因此不会为给定用户重复一个国家/地区.
PPS我在寻找来自3个国家的用户 - 英格兰,法国和德国(以及这些国家是任意的).
PPPS我不是在寻找特定于某个RDBMS的答案.我想"一般地"回答这个问题.
我满足于为每个查询重新生成where子句,前提是可以通过编程方式生成where子句(例如,我可以构建一个函数来构建WHERE/FROM - WHERE子句).