如何在ObjectionJS/Knex ORM中编写带AND OR组合条件的查询语句
ObjectionJS/Knex 等效SQL查询实现方案
原查询SQL:
SELECT * FROM EMPLOYEE WHERE AGE>40 AND (LOCATION='Chennai' OR NOT LOCATION='Agra');
1. 纯Knex写法
knex('EMPLOYEE') .where('AGE', '>', 40) .where(function () { this.where('LOCATION', 'Chennai') .orWhereNot('LOCATION', 'Agra') })
2. ObjectionJS 模型写法
前提是你已经完成Employee模型定义,关联了数据库中的EMPLOYEE表:
await Employee.query() .where('AGE', '>', 40) .where((builder) => { builder.where('LOCATION', 'Chennai') .orWhereNot('LOCATION', 'Agra') })
- 嵌套的
where回调会自动将内部条件用括号包裹,完全匹配原SQL的条件优先级逻辑 - 内置的
orWhereNot方法直接对应原生SQL的OR NOT语法,无需手动拼接条件字符串
内容的提问来源于stack exchange,提问作者Sree Sajai
相关产品推荐
相关产品推荐

