我在rails中工作,但是sql中的答案同样有用。假设我有一个用户表和一个购买表。我想找到只购买过商品a的用户。我希望使用一个大致如下的查询: User.joins(:purchases).group(:id).having("DISTINCT(item) = 'A'").pluck(:id)
这是我需要回答的问题的简化,但这个分组问题是我的主要障碍。出于这个原因,我希望得到一个逻辑上非常相似的答案,因为其他解决方法可能不适用。
我在rails中工作,但是sql中的答案同样有用。假设我有一个用户表和一个购买表。我想找到只购买过商品a的用户。我希望使用一个大致如下的查询: User.joins(:purchases).group(:id).having("DISTINCT(item) = 'A'").pluck(:id)
这是我需要回答的问题的简化,但这个分组问题是我的主要障碍。出于这个原因,我希望得到一个逻辑上非常相似的答案,因为其他解决方法可能不适用。
2条答案
按热度按时间ebdffaop1#
这在rails中有效吗?
这个短语是:只有一个不同的值(因为
MIN()
以及MAX()
是平等的)'A'
.或者:
代表:没有其他价值
'A'
.dxxyhpgq2#
在
having
只能使用聚合函数(例如。having count(id) > 2
)或列上的表达式,例如。having("id > 1")
.因此,根据您的数据库,您可以尝试找到一个聚合函数,该函数根据id标识分组中是否存在项