Rails 3 ActiveRecord: UNION



是否有任何方法在Rails 3中使用MySQL UNION ?

我认为唯一的方法是直接执行查询。

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

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

MyModel.find_by_sql("...")

我发现了一个使用select的简洁hack。例如,如果你想在User和OtherUser之间创建一个联合。

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

将生成以下SQL

"SELECT id from other_users union select id FROM users " 
Model.find_by_sql("your union query")

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

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

同时,我已经写了一个小hack,你将能够创建简单的联合查询和做一些过滤器与DISTINCT, ORDER BY和LIMIT:

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

相关内容

  • 没有找到相关文章

最新更新