如何计算在Knex中传递子查询的结果?

时间:2017-07-07 16:37:10

标签: javascript knex.js

我有一个很大的query从多个表中选择多个列,我想知道有多少个记录(进行计数)。

我无法得到结果的长度,因为我还在查询中添加了.offset.limit

有没有办法可以生成以下内容

SELECT COUNT(*) FROM (
  knex query
) as count

用knex?怎么样?

(版本:0.11.10

3 个答案:

答案 0 :(得分:1)

你一定在寻找这个

LocalDate

答案 1 :(得分:0)

从当前网站上的文档中了解到这一点。

knex('users').count('active as a')
Outputs:
select count(`active`) as `a` from `users`

Knex documentation v 0.13.0

搜索“选择计数”将为您提供更多示例。

答案 2 :(得分:0)

以下代码在给定一个复杂的内部查询时返回一个计数:

async getTotalCount() {
  const clonedKnexObject = knexObject.clone();
  clonedKnexObject.limit(999999);
  const countQuery = knex.from(clonedKnexObject.as('a')).count();
  const response = await dbQuery(countQuery.toSQL().toNative());
  return response[0]['count(*)'];
}

注意:我需要设置.limit(999999),因为它的现有限制要低得多,需要覆盖。