假设我有一个这样的表:
表格1:
name favorite_music
a country
b rock
a jazz
b jazz
Run Code Online (Sandbox Code Playgroud)
如何进行此查询:找到favorite_music风格同时包含 "country" 和 "jazz"的名称.对于上面的例子,它应该只是"a".
这应该得到他们:
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)
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)
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |