我有5条记录:
id |usuario_id| key
-----------------------
1 | 1 | pink
2 | 1 | red
3 | 1 | blue
4 | 1 | yellow
5 | 3 | pink
我的问题如下:
如何检索包含所有三个usuario_id
s的key
:粉色,红色和蓝色。
答案 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')