【问题标题】:Check if all three different values are present within the group检查组中是否存在所有三个不同的值
【发布时间】:2015-05-04 16:40:14
【问题描述】:

我有 5 条记录:

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

我的问题如下:

如何检索具有所有三个keys 的usuario_ids:粉色、红色和蓝色。

【问题讨论】:

  • 您是否尝试在数据库中查询粉色、红色或蓝色的值?
  • 这不是问题。你想要的结果是什么?
  • 检查@suslov 的答案是很好的答案!

标签: mysql sql ruby-on-rails activerecord


【解决方案1】:

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

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')

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 1970-01-01
    • 2015-06-18
    • 2012-05-20
    • 2021-12-11
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2015-04-12
    相关资源
    最近更新 更多