Sql 能否在Rails活动记录中按计数选择唯一?
如果你做不到,SQL会怎么做 基本上,我希望选择至少有两个具有相同属性的问题对象。该属性被称为,Sql 能否在Rails活动记录中按计数选择唯一?,sql,ruby-on-rails,postgresql,Sql,Ruby On Rails,Postgresql,如果你做不到,SQL会怎么做 基本上,我希望选择至少有两个具有相同属性的问题对象。该属性被称为,word\u id 那么,如何只选择与另一个对象共享一个公共属性的所有对象呢 如果我有三个对象: # Question(id: 1, word_id: 1) # Question(id: 2, word_id: 2) # Question(id: 3, word_id: 2) # Question(id: 4, word_id: 1) # Question(id: 5, word_id: 1) # Q
word\u id
那么,如何只选择与另一个对象共享一个公共属性的所有对象呢
如果我有三个对象:
# Question(id: 1, word_id: 1)
# Question(id: 2, word_id: 2)
# Question(id: 3, word_id: 2)
# Question(id: 4, word_id: 1)
# Question(id: 5, word_id: 1)
# Question(id: 6, word_id: 1)
我只想返回id的2
和3
,因为它们两次共享一个公共属性
可能吗?我粗略地对DB进行了两次调用,首先调用所有有问题的对象,将它们添加到一个数组中,然后从该数组中减去符合我要求的对象。我只是想知道是否有一种更优雅的方法可以同时完成这一切。just SQL:
SELECT * FROM questions WHERE world_id IN (
SELECT world_id FROM questions GROUP BY world_id HAVING count(*) = 2
)
轨道:
Question.where("world_id IN (?)", Question.find(:all, select: "world_id",
group: "world_id HAVING count(*) = 2"))
我想这仍然是两个查询…只是SQL:
SELECT * FROM questions WHERE world_id IN (
SELECT world_id FROM questions GROUP BY world_id HAVING count(*) = 2
)
轨道:
Question.where("world_id IN (?)", Question.find(:all, select: "world_id",
group: "world_id HAVING count(*) = 2"))
我想还是有两个问题…哇,上面的评论太棒了。非常感谢各位!哇,上面的评论太棒了。非常感谢各位!