我有一個大的query
從多個表中選擇多個列,我想知道有多少記錄(做一個計數)。如何計算在Knex中傳遞子查詢的結果?
我無法得到結果的長度,因爲我還將.offset
和.limit
添加到查詢中。
有沒有一種方法,我可以生成以下
SELECT COUNT(*) FROM (
knex query
) as count
與knex?怎麼樣?
(版本:0.11.10
)
我有一個大的query
從多個表中選擇多個列,我想知道有多少記錄(做一個計數)。如何計算在Knex中傳遞子查詢的結果?
我無法得到結果的長度,因爲我還將.offset
和.limit
添加到查詢中。
有沒有一種方法,我可以生成以下
SELECT COUNT(*) FROM (
knex query
) as count
與knex?怎麼樣?
(版本:0.11.10
)
您必須尋找來自users`這個
const knex = require('knex')({ client: 'pg' })
const builder = knex
.count('t.* as count')
// You actually can use string|function with this = knex builder|another knex builder
.from(function() {
// Your actual query goes here
this
.select('*')
.from('users')
.whereNull('some_condition', 'some_value')
.as('t') // Alias for your DB (For example Postgres requires that inner query must have an alias)
})
.first()
console.log(builder.toString()) // Prints your query
// => select count("t".*) from (select * from "users" where "removed_at" is null) as "t" limit 1
從當前網站上的文檔得到這個。
knex('users').count('active as a')
Outputs:
select count(`active`) as `a` from `users`
搜索 「SELECT COUNT」 會給你更多的例子。
這會產生'SELECT COUNT(*),但我需要的是'SELECT COUNT(*)FROM(SELECT * FROM用戶)' – BrunoLM
如果您喜歡使用箭頭函數,而不是引用此,構建器也作爲參數傳遞給回調函數。像'.from(builder => builder.from('users')。as('t'))' –