首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等同于SQL 'minus‘的activerecord

等同于SQL 'minus‘的activerecord
EN

Stack Overflow用户
提问于 2010-08-07 09:51:26
回答 2查看 3.2K关注 0票数 4

从一个查询结果中减去另一个查询结果的rails方法是什么?特定于数据库的SQL示例如下:

代码语言:javascript
复制
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-08 01:15:06

我将把这个放到混合中--不是一个解决方案,但可能会对进度有所帮助:

我能想到的最好的方法是使用NOT IN:

代码语言:javascript
复制
StoreInformation.where('date NOT IN (?)', InternetSale.all)

这就是Rails 3- Rails 2应该是:

代码语言:javascript
复制
StoreInformation.all(:conditions => ['date NOT IN(?)', InternetSale.all])

但是这两个都会首先从internet_sales中选择所有内容;您真正想要的是一个嵌套查询来在数据库引擎中执行所有操作。为此,我认为您必须进入find_by_sql并只给出一个嵌套查询。

显然,这假设您使用的是MySQL!HTH。

票数 4
EN

Stack Overflow用户

发布于 2018-04-19 22:05:05

回答晚了,但我想你的意思是:

代码语言:javascript
复制
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,所以任何高于该版本的东西都可以解决问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3428852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档