检查组中是否存在所有三个不同的值

时间:2015-05-04 16:40:14

标签: mysql sql ruby-on-rails activerecord

我有5条记录:

id |usuario_id|   key 
-----------------------
1  |    1     | pink
2  |    1     | red
3  |    1     | blue
4  |    1     | yellow
5  |    3     | pink

我的问题如下:

如何检索包含所有三个usuario_id s的key:粉色,红色和蓝色。

1 个答案:

答案 0 :(得分:1)

您可以检查key子句中每个usuario_id条目中是否存在全部三个唯一having

select `usuario_id`
from `tbl`
where `key` in ('pink', 'red', 'blue')
group by `usuario_id`
having count(distinct `key`) = 3

ActiveRecord 查询:

Tbl.select(:usuario_id)
   .where(key: %w(pink red blue))
   .group_by(:usuario_id)
   .having('count(distinct `usuario_id`) = 3')