Rails 3 ActiveRecord:UNION

发布于 2024-10-31 04:21:24 字数 38 浏览 1 评论 0原文

有没有办法在 Rails 3 中使用 MySQL UNION?

Is there any way to use MySQL UNION in Rails 3?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

阳光下的泡沫是彩色的 2024-11-07 04:21:24

我认为让这个工作的唯一方法是直接执行查询。

ActiveRecord::Base.connection.execute("SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10)")

这将返回一个 ActiveRecord 结果集。如果您希望将结果包装在模型中,请执行以下操作:

MyModel.find_by_sql("...")

I think the only way you're going to get this to work by directly executing the query.

ActiveRecord::Base.connection.execute("SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10)")

This returns an ActiveRecord resultset. If you want the results wrapped in a model do something like this:

MyModel.find_by_sql("...")
女中豪杰 2024-11-07 04:21:24

我发现了一个使用 select 的巧妙技巧。
例如,如果您想在 User 和 OtherUser 之间建立并集。

User.select('id from other_users union select id')

这将生成这个 SQL

"SELECT id from other_users union select id FROM users " 

I found a neat hack using select .
For example if you want to make a union between User and OtherUser .

User.select('id from other_users union select id')

this will generate this SQL

"SELECT id from other_users union select id FROM users " 
情归归情 2024-11-07 04:21:24
Model.find_by_sql("your union query")
Model.find_by_sql("your union query")
御守 2024-11-07 04:21:24

正如您可以在该线程中读到的那样,有人正在研究在 Rails 中创建联合查询的更好解决方案:

https ://github.com/rails/arel/pull/118

同时,我编写了一个小技巧,您可以使用它创建简单的联合查询并使用 DISTINCT、ORDER BY 和 LIMIT 进行一些过滤:

http://coderwall.com/p/9hohaa

As you can read on this thread there are people working on a better solution for creating union queries in Rails:

https://github.com/rails/arel/pull/118

Meanwhile, I have written an small hack with which you'll be able to create simple union queries and do some filters with DISTINCT, ORDER BY and LIMIT:

http://coderwall.com/p/9hohaa

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文