Rails 3 ActiveRecord:UNION

krn*_*krn 8 mysql union activerecord ruby-on-rails

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

Dan*_*Fox 10

我认为你通过直接执行查询来实现这一目标的唯一方法.

ActiveRecord::Base.connection.execute("SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10)")
Run Code Online (Sandbox Code Playgroud)

这将返回ActiveRecord结果集.如果您希望包含在模型中的结果执行以下操作:

MyModel.find_by_sql("...")
Run Code Online (Sandbox Code Playgroud)


les*_*sce 5

我找到了一个使用select的整洁黑客.例如,如果要在User和OtherUser之间建立联合.

User.select('id from other_users union select id')
Run Code Online (Sandbox Code Playgroud)

这将生成此SQL

"SELECT id from other_users union select id FROM users " 
Run Code Online (Sandbox Code Playgroud)