sql选择更多共享一列并在另一列中包含少数值之一的行

wmomyfyw  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(228)

假设我有这样的table:

+-----------------+-----------------+
| name            | playlist        |
+-----------------+-----------------+
| Jay-Z           | chill vibes     |
+-----------------+-----------------+
| Jay-Z           | rap             |
+-----------------+-----------------+
| Jay-Z           | discover weekly |
+-----------------+-----------------+
| Imagine Dragons | discover weekly |
+-----------------+-----------------+
| ZEDD            | discover weekly |
+-----------------+-----------------+
| Imagine Dragons | pop             |
+-----------------+-----------------+

我需要选择一个作者,是在播放列表发现每周和说唱。我只知道播放列表。如何用纯sql实现这一点,这可能吗?

e0bqpujr

e0bqpujr1#

使用group by和having count。见下表:

select name
from table1
where playlist in ('rap','discover weekly')
group by name
having count(distinct playlist) = 2;

Result:  Jay-Z
o4tp2gmn

o4tp2gmn2#

您可以使用一个过滤器,使不同播放列表的数量与您正在查找的数量相等

select name  
  from my_table  
  where playlist in ('discover weekly', 'rap')
  group by name
  having count(distinct playlist) = 2

相关问题