是否有任何方法在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