gpt4 book ai didi

sequelize.js - 序列化嵌套条件

转载 作者:行者123 更新时间:2023-12-03 22:26:29 25 4
gpt4 key购买 nike

select * from courses where (days like '%a%' or days like '%b%') and (startTime <= 9  and 9  < endTime) OR (10 >= startTime and 10 <= endTime)

这是我想使用 sequelize 编写的 sql

这就是我写的
const result = await models.courses.findAll({
where: {
[op.or]: [
{
days: { [op.like]: '%a%' },
},
{
days: { [op.like]: '%b%' },
},
],
[op.or]: [
{
[op.and]: [
{
startTime: { [op.lte]: 9 },
},
{
endTime: { [op.gte]: 9 },
},
],
},
{
[op.and]: [
{
startTime: { [op.lte]: 10 },
},
{
endTime: { [op.gte]: 10 },
},
],
},
],
},
});


但结果显示...

选择...从类(class)...
WHERE (( courses . startTime <= 9 AND courses . endTime >= 9) OR ( courses . startTime <= 10 AND courses . endTime >= 10));

从一开始我的天数查询发生了什么变化?

最佳答案

您缺少包含天部分和开始时间/结束时间部分的顶级“AND”。奇怪的是你没有收到错误 - 也许开始时间/结束时间部分覆盖了天部分。

稍后添加:测试确认第二个子句将覆盖第一个子句。例如

where : {
[Op.or] : [{id : 1},{id : 2}], // 1st clause
[Op.or] : [{id : 3},{id : 4}] // 2nd clause
}

结果只
WHERE id = 3 OR id = 4

需要有一个操作数连接两个 OR 子句....

关于sequelize.js - 序列化嵌套条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com