我正在将应用程序从PHP / MYSQL切换到Express,并使用knex连接到MYSQL数据库。在我的一个查询中,我使用了类似的语句(为简洁起见,我将其缩短了。)
SELECT ROUND(AVG(Q1),2) AS Q1 FROM reviews WHERE id=? AND active='1'
如果我使用knex.raw,我可以使用ROUND,但我想知道是否有办法使用查询构建器来编写它。使用查询构建器使得在视图侧处理输出比尝试导航从原始查询返回的对象更容易。
这是我到目前为止在knex中所拥有的。
let id = req.params.id;
knex('reviews')
//Can you wrap a ROUND around the average? Or do a Round at all?
.avg('Q1 as Q1')
.where('id', '=', id)
非常感谢!
答案 0 :(得分:3)
您可以在raw
内使用select
。在这种情况下:
knex('reviews')
.select(knex.raw('ROUND(AVG(Q1),2) AS Q1'))
在处理原始陈述时,请查看文档here以获取更多示例和良好做法。