activerecord 中的子查询

编程入门 行业动态 更新时间:2024-10-26 17:33:33
本文介绍了activerecord 中的子查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

使用 SQL 我可以很容易地做这样的子查询

With SQL I can easily do sub-queries like this

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 来做到这一点?

How can I do this using rails' 3 activerecord/ arel/ meta_where?

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

I do need/ want real subqueries, no ruby workarounds (using several queries).

推荐答案

Rails 现在默认这样做 :)

Rails now does this by default :)

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)

(the version number that "now" refers to is most likely 3.2)

更多推荐

activerecord 中的子查询

本文发布于:2023-10-22 08:12:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1516955.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:activerecord

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!