Jav*_*nov 1 mysql node.js node-mysql knex.js
我正在使用 knex.js 编写查询,但我被 orWhere 困住了。
我需要这样的查询:
select
count(*)
from
`Project`
where
`Project`.`createdAt` >= '2019-11-12'
and
`Project`.`createdAt` <= '2020-11-19'
and
((`Project`.`productType` = 1)
or
(`Project`.`productType` = 2))
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这就是我得到的:
select
count(*)
from
`Project`
where
`Project`.`createdAt` >= '2019-11-12'
and
`Project`.`createdAt` <= '2020-11-19'
or
(`Project`.`productType` = 1)
or
(`Project`.`productType` = 2)
Run Code Online (Sandbox Code Playgroud)
or请注意,我想要用两个 'and来代替第一个or
这是代码:
builder.count('*')
.from('Project')
.where('Project.createdAt', '>=', '2019-11-12')
.where('Project.createdAt', '<=', '2019-11-19')
.orWhere({'Project.productType': 1})
.orWhere({'Project.productType': 2})
Run Code Online (Sandbox Code Playgroud)
将不胜感激任何帮助
Tha*_*gLe 11
我明白了,你可以尝试一下:
//
builder.count('*')
.from('Project')
.where('Project.createdAt', '>=', '2019-11-12')
.where('Project.createdAt', '<=', '2019-11-19')
.where(function () {
this.orWhere({'Project.productType': 1}).orWhere({'Project.productType': 2})
});
// or use arrow function
builder.count('*')
.from('Project')
.where('Project.createdAt', '>=', '2019-11-12')
.where('Project.createdAt', '<=', '2019-11-19')
.where((bd) => {
bd.orWhere({'Project.productType': 1}).orWhere({'Project.productType': 2})
});
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助。
| 归档时间: |
|
| 查看次数: |
5819 次 |
| 最近记录: |