一个简单的SQL查询问题

Rn2*_*2dy 2 sql

假设我有一个这样的表:

表格1:

name     favorite_music
 a         country
 b         rock
 a         jazz
 b         jazz
Run Code Online (Sandbox Code Playgroud)

如何进行此查询:找到favorite_music风格同时包含 "country" "jazz"的名称.对于上面的例子,它应该只是"a".

gpe*_*che 8

这应该得到他们:

select name
from table1
where favorite_music = 'country'
intersect
select name
from table1
where favorite_music = 'jazz'
Run Code Online (Sandbox Code Playgroud)

编辑:问题不是很清楚.上面的查询将返回每个名称,其中爵士乐和国家/地区都是最喜欢的音乐风格(在您的示例表中,name ='a')

编辑2:只是为了好玩,一个例子应该使用子查询进行一次扫描:

select name from (
    select 
    name, 
    count(case when favorite_music = 'country' then 1 end) as likes_country,
    count(case when favorite_music = 'jazz' then 1 end) as likes_jazz,
    from table1
    where favorite_music in ('country', 'jazz')
    group by name
) where likes_country > 0 and likes_jazz > 0
Run Code Online (Sandbox Code Playgroud)


JNK*_*JNK 8

SELECT t1.name  
FROM table1 as t1  
INNER JOIN table1 AS t2 ON t1.name = t2.name 
WHERE t1.favorite_music = 'jazz' AND t2.favorite_music = 'country'  
Run Code Online (Sandbox Code Playgroud)