activerecord 中的子查询

2023-11-24

使用 SQL 我可以轻松地执行这样的子查询

User.where(:id => Account.where(..).select(:user_id))

这会产生:

SELECT * FROM users WHERE id IN (SELECT user_id FROM accounts WHERE ..)

我如何使用rails' 3 activerecord/ arel/ meta_where 来做到这一点?

我确实需要/想要真正的子查询,没有 ruby​​ 解决方法(使用多个查询)。


Rails 现在默认执行此操作:)

Message.where(user_id: Profile.select("user_id").where(gender: 'm'))

将产生以下 SQL

SELECT "messages".* FROM "messages" WHERE "messages"."user_id" IN (SELECT user_id FROM "profiles" WHERE "profiles"."gender" = 'm')

(“现在”指的版本号很可能是3.2)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

activerecord 中的子查询 的相关文章

  • 为什么这个(不相关的)子查询会导致这样的问题?

    我有一个大型查询 其中一个简单的子查询优化将其从 8 分钟缩短到 20 秒 我不确定我是否理解为什么优化会产生如此巨大的效果 本质上 这是问题部分 SELECT bunch of stuff FROM a LEFT OUTER JOIN b
  • Oracle Order by 不适用于 DUAL 中的子查询

    大家好 当我执行此查询时 它抛出以下错误 ORA 00907 missing right parenthesis 但如果你删除order by 1 from SELECT 2 FROM DUAL order by 1它的工作 我是否错过了这
  • 如何从子查询结果中选择值

    我有下面提到的 4 个表并尝试提取值ACC NUMBER来自子查询 请帮助我优化正确的语法 ACCOUNT TABLE ACC NUMBER ACC NAME ACCOUNT DETAILS TABLE ACC NUMBER DEAL NU
  • postgresql 多个子查询

    我手头有一项任务 要求我返回一个学生的详细信息 该学生参加了一位姓霍夫曼的老师所教的课程 但我陷入了困境 SELECT FROM Public Class WHERE tid SELECT tid FROM Public Tutor WHE
  • 子查询是邪恶的吗?

    这个问题是在一位朋友的评论之后提出的 他说 当一个查询有很多子查询时 就表明数据库存在设计缺陷 必须避免它们 他还表示 许多书籍都提出了同样的建议 我部分同意 但我认为这些查询具有复杂的逻辑 需要大量子查询 或者为了避免子查询 查询的物化视
  • ActiveRecord::未知属性错误?

    我刚刚将一个应用程序推送到 Heroku 生产环境 基本上有一个Bus模型 它有一个seats属性 class Bus lt ActiveRecord Base attr accessible seats other attributes
  • 执行捆绑安装时出现 MySql 错误

    当我进行捆绑安装时 出现以下错误 Installing mysql2 0 3 10 with native extensions Gem Installer ExtensionBuildError ERROR Failed to build
  • 如何在链轮预处理的 js 文件(不是视图)中获取 escape_javascript 和其他帮助程序?

    我正在使用 Rails 3 1 和链轮的东西 我想使用 ERB 预处理 js 文件 然后使用 javascript include tag 包含该文件 它是从代码生成的 因此我使用 ERB 对其进行预处理 但我无法从 ActionView
  • Rails/Arel - 组合 AREL 谓词时的优先级

    模型有两个有趣的属性 forename and town 我想搜索理查德 伦敦 和布莱恩 马德里 从长远来看 p Person scoped pred1 p table forename eq Richard and p table tow
  • Mysql 嵌套查询和 GROUP BY

    我正在尝试对我的数据库执行以下查询 SELECT source Month as t1 GROUP CONCAT SELECT SUM amount FROM reports GROUP BY Month as amount FROM re
  • 如何在 MySQL 的子查询中指定父查询字段?

    如何在 MySQL 的子查询中指定父查询字段 例如 我用 PHP 编写了一个基本的公告板类型程序 在数据库中 每个帖子包含 id PK 和parent id 父帖子的id 如果帖子本身就是父帖子 则其parent id 设置为0 我正在尝试
  • 在进行 Rails asset:precompile 时如何运行一些初始化程序?

    背景 我有一个应用程序 最近更新到了 Rails 3 2 1 从 Rails 3 0 x 并重构了 JS 和 CSS 资源以利用新的资源管道 该应用程序托管在具有 Celadon Cedar 堆栈的 Heroku 上 应用程序配置 我将应用
  • 如何将此原始查询转换为活动记录查询接口或区域?

    我想找到courses其中至少有 1variant with variant type 1 并且没有任何variant with variant type 2 所以我的查询如下 Course where id IN SELECT cours
  • Rails 3.1.4 - 渲染:文本

    我正在将 Rails 2 应用程序更新到 Rails 3 发现使用 render text 的行为不再相同 results 是一个数组 在我的控制器中 render text gt ul results ul 它将整个数组作为字符串返回 而
  • 优化子查询选择每组最后一条记录

    我有这个查询 它是一个依赖查询并且需要很多执行时间 SELECT u id u user name ifnull select longitude from map where user id u id order by map id de
  • NSPredicate 与子查询

    我有这样的关系 player lt gt gt games lt lt gt quiz 并且想要获得所有不在玩家游戏中的测验 例如 SELECT FROM ZQUIZ WHERE Z PK NOT IN SELECT ZQUIZ FROM
  • 可安装发动机安装在什么路径上

    我需要从可安装引擎的布局内部知道它当前安装在什么路径上 该怎么做呢 例如 我的routes rb 包含以下行 mount BackendCore Engine gt backend 从 BackendCore 内部 我需要访问 backen
  • Ruby - 乘法问题

    我的输出是这样的 ruby 1 9 2 p290 011 gt 2 32 3 gt 6 959999999999999 我记得有一天在另一台机器上我得到了它就像 2 32 3 6 我的错误是什么 非常感谢您阅读本文 如果您确实想向下舍入为整
  • 如何将 Devise 的“超时”模块添加到现有的 Devise 安装中? - 轨道 3.1

    这些是将模块添加到现有 Devise 安装的说明 https github com plataformatec devise wiki How To change an already existing table to add devis
  • 更改 en.yml 文件中的属性名称不起作用

    我更改了 ruby on Rails 项目中 en yml 文件中的属性名称 按钮工作正常 但字段属性并没有改变 这是我的模型 class Enr AffordableWarmth lt ActiveRecord Base self tab

随机推荐