假设我有一个这样的表:

表格1:

name     favorite_music
 a         country
 b         rock
 a         jazz
 b         jazz

如何执行此查询:查找其“favourite_music”样式同时具有“country”和“jazz”的名称。对于上面的示例,它应该仅为“a”。

最佳答案

这应该使他们:

select name
from table1
where favorite_music = 'country'
intersect
select name
from table1
where favorite_music = 'jazz'

编辑:问题不是很清楚。上面的查询将返回具有爵士乐和乡村音乐的所有名字(在您的示例表中,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

关于sql - 一个简单的SQL查询问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3754673/

10-11 20:41