可以说,我有员工,我知道他们喜欢什么水果。

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/

10-10 07:31