从一个查询结果中减去另一个查询结果的rails方法是什么?特定于数据库的SQL示例如下:
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales 发布于 2010-08-08 01:15:06
我将把这个放到混合中--不是一个解决方案,但可能会对进度有所帮助:
我能想到的最好的方法是使用NOT IN:
StoreInformation.where('date NOT IN (?)', InternetSale.all)这就是Rails 3- Rails 2应该是:
StoreInformation.all(:conditions => ['date NOT IN(?)', InternetSale.all])但是这两个都会首先从internet_sales中选择所有内容;您真正想要的是一个嵌套查询来在数据库引擎中执行所有操作。为此,我认为您必须进入find_by_sql并只给出一个嵌套查询。
显然,这假设您使用的是MySQL!HTH。
发布于 2018-04-19 22:05:05
回答晚了,但我想你的意思是:
activities = Activity.all
searches = activites.where(key: 'search')
(activites - searches).each do |anything_but_search|
p anything_but_search
end您可以将两个ActiveRecordsRelation相减,得到减号结果,就像SQL一样。
我使用的是Rails 4.2,所以任何高于该版本的东西都可以解决问题。
https://stackoverflow.com/questions/3428852
复制相似问题