You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:36:06