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

Node.js Sequelize能否实现值在两列区间的WHERE查询?

在Sequelize中不使用原生查询实现指定BETWEEN逻辑

完全可以实现,不需要依赖原生查询。你可以通过Sequelize的操作符(Op)组合条件来复现目标SQL的逻辑——因为10000 BETWEEN minAmount AND maxAmount等价于minAmount <= 10000 AND maxAmount >= 10000,天数的条件同理。

假设你的模型名为TableName(对应数据库的tablename表),具体实现代码如下:

const { Op } = require('sequelize');
// 执行查询
const targetRecords = await TableName.findAll({
  where: {
    minAmount: { [Op.lte]: 10000 },
    maxAmount: { [Op.gte]: 10000 },
    minDay: { [Op.lte]: 30 },
    maxDay: { [Op.gte]: 30 }
  }
});

补充说明:

  • Sequelize的where条件默认使用AND连接所有子条件,因此无需显式声明Op.and
  • 如果需要更清晰地体现逻辑分组,也可以显式使用Op.and包裹条件,效果完全一致:
const { Op } = require('sequelize');
const targetRecords = await TableName.findAll({
  where: {
    [Op.and]: [
      { minAmount: { [Op.lte]: 10000 } },
      { maxAmount: { [Op.gte]: 10000 } },
      { minDay: { [Op.lte]: 30 } },
      { maxDay: { [Op.gte]: 30 } }
    ]
  }
});

这段代码生成的SQL语句和你给出的原生SQL逻辑完全一致,不会用到原生查询语句。

内容的提问来源于stack exchange,提问作者Poor programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:20:28