可以说,我有员工,我知道他们喜欢什么水果。
fruits(name, fruit_name)
我的问题是:列出所有至少喜欢唐纳德的水果的雇员。
那么,如何比较两组值?
这就是我得到唐纳德喜欢的水果的方式:
Select name, fruit_name
from fruits
where initcap(name) like '%Donald%';
例如:唐纳德喜欢苹果,梨,桃子。我需要喜欢苹果,梨,桃子和其他水果的人,但他们一定喜欢那些3。
最佳答案
您可以使用自我加入来获得理想的结果-
我对您的查询进行了一些调整,以获取输出-
select distinct e1.name from fruits e1,(Select name, fruit_name
from fruits
where initcap(name) like '%Donald%') e2
where e1.fruit_name = e2.fruit_name;
上面的查询返回与唐纳德匹配至少一个水果的员工
经过测试以下的查询为唐纳德所有水果匹配的员工提供了至少
select name from (
select name,count(1) cnt from
(select name,fruit_name, case when fruit_name in (Select distinct fruit_name
from fruits
where initcap(name) like '%Donald%') then 1 else 0 end fruit_match from fruits)
where fruit_match = 1 group by name) where cnt >=
(select count(distinct fruit_name) from fruits where initcap(name) like '%Donald%');
关于sql - SQL-比较两组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19807987/