sql - 使用活动记录来实现这个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_id
在joins
这里设置方法中的参数?
运行此源后,p.title
得到NoMethodError: undefined method title
.
解决方案
改为使用ActiveRecord::Base.connection.execute
。
推荐阅读
- generics - DryIoC 将参数传递给基于泛型类型参数的开放泛型服务的构造函数
- python-3.x - python中的Minecraft数据包嗅探
- python - Django:如何在页面上显示来自特定类别的帖子
- java - Java FileInputStream.read() 跳过字节
- subplot - 在指定数量的行和列中绘制子图的问题
- php - PHP 中的 Endforeach 块会中断缩进。我想简单地写模板
- django - 致命错误:libmemcached/memcached.h:没有这样的文件或目录
- kubernetes - 群集 IP 服务未按预期工作
- c# - 对我从继承的类引用的对象使用属性是否有优势
- react-native - 得到一个旋转的木板屏幕和错误:相机还没有准备好。使用 expo Camera 组件等待“onCameraReady”回调