use*_*506 5 mysql activerecord ruby-on-rails where-in
我对Rails很陌生,对SQL类型语言有很少的经验.
我正在使用MySQL2开发Rails 3项目
我这里有一个通用的SQL语句,我想在我们的数据库中同时工作.有没有办法通过ActiveRecord功能来做到这一点?
SELECT * FROM MyRecords
WHERE (f1, f2, f3, f4) IN (
SELECT f1, f2, f3, f4
FROM MyRecords
GROUP BY f1, f2, f3, f4
HAVING count(*) = 1
);
Run Code Online (Sandbox Code Playgroud)
换句话说,我想执行"其中"语句(并坦率地说,我甚至不知道凡在声明中所做的,只是这个答案做什么我需要:我如何(或者我可以)SELECT DISTINCT on multiple columns(postgresql)?)更具体地说,我必须扩充以下ActiveRecord函数,以便它执行上述查询:
def MyRecordFunction
MyRecords.where('org_id=?', self.org_id).order('f4')
end
Run Code Online (Sandbox Code Playgroud)
谢谢.
pab*_*rti 27
我有点困惑,但我认为这就是你要找的东西:
MyRecord.where(:org_id => [1, 2, 3]).order('f4')
Run Code Online (Sandbox Code Playgroud)
该在的其中上述查找某些字段的特定值,在该示例中陈述,该查询将寻找寄存器mY_records表,其中包含org_id 1,2或3.
看看这个:http://guides.rubyonrails.org/active_record_querying.html
更新:我明白,Harish Shetty有重点.
尝试这个:
MyRecord.joins("JOIN
(
SELECT f1, f2, f3, f4
FROM my_records
GROUP BY f1, f2, f3, f4
HAVING count(*) = 1
) a ON a.f1 = my_records.f1 AND
a.f2 = my_records.f2 AND
a.f3 = my_records.f3 AND
a.f4 = my_records.f4")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13372 次 |
最近记录: |