如何在knex.js的HAVING子句中使用COUNT聚合器


let duplicates = await Books.query()
.select('book_id')
.groupBy('book_id')
.having(knex.count('book_id'), '>', 1);

在这里,我想在haveing子句中使用count聚合器。如何在knex.having((函数中执行此操作?

使用一小段knex.raw可能是最简单的方法。

let duplicates = await Books.query()
.select('book_id')
.groupBy('book_id')
.having(knex.raw('count(book_id) > 1'));

或者,如果你想用反勾号正确地转义列名,你可以使用??位置参数

let duplicates = await Books.query()
.select('book_id')
.groupBy('book_id')
.having(knex.raw('count(??) > 1', 'book_id'));

最新更新