首页 > 解决方案 > 使用活动记录来实现这个sql是更好的方法吗?

问题描述

select t1.id, t1.title from posts t1
inner join (select title, body from posts group by title) as t2 on t1.title = t2.title where title = ?

试过:

Post
  .select(:id, :title)
  .joins('INNER JOIN (SELECT title, body from posts AS t2)')
  .group(:title)
  .where('title = ?', title)

不知道如何设置t1它。

如果没有,也许这ActiveRecord::Base.connection是唯一的方法。

更多细节

对于这个 sql:

p = Post.select("t1.title")
        .from("posts t1")
        .joins("INNER JOIN (SELECT title, MAX(id) AS maxID FROM posts WHERE category_id = ? GROUP GY title) AS t2 ON t1.title = t2.title AND t1.id = t2.maxID", 1)

为什么不能category_idjoins这里设置方法中的参数?

运行此源后,p.title得到NoMethodError: undefined method title.

标签: sqlruby-on-railsactiverecord

解决方案


改为使用ActiveRecord::Base.connection.execute


推荐阅读