0”来 Sequelize v3.33 但还找不到解决方案。 曾尝试过 sequelize.literal(-6ren">
gpt4 book ai didi

javascript - 将 MySQL "where"转换为 Sequelizejs "where"

转载 作者:行者123 更新时间:2023-11-29 07:19:00 24 4
gpt4 key购买 nike

我试图写“WHERE (CASE ... THEN ... ELSE ... END) > 0”来 Sequelize v3.33 但还找不到解决方案。

曾尝试过 sequelize.literal('...') 但没有成功。使用“HAVING”是解决方案之一,但它不利于大数据提取的性能,而且速度要慢一倍。

这只是一个 MySQL 代码示例,但非常接近我想要实现的目标。

SELECT
(CASE `a`.`fee` IS NULL
THEN `a.b`.`fee`
ELSE `a`.`fee`
END) AS `_fee`
FROM `a`
WHERE
(CASE `a`.`fee` IS NULL
THEN `a.b`.`fee`
ELSE `a`.`fee`
END) > 0 AND
(created_at > currentDate
AND
created_at < futureDate)

我想将其转换为 Sequelize 。下面是我所能做的,我不知道如何添加那个案例关闭。

models.a.findAll({
...
where: {
created_at: { $gt: startDate, $lt: endDate }
}
})

*** 不要介意 created_at,这只是一个例子。

最佳答案

你可以使用 sequelize.wheresequelize.literal :

where:{
$and : [
{ created_at: { $gt: startDate, $lt: endDate } },
sequelize.where(sequelize.literal('(CASE `a`.`fee` IS NULL THEN `a.b`.`fee` ELSE `a`.`fee` END)') , { $gt : 0 } )
]
}

Note : this might not work as alias a. of the table might be diff, you can debug and change as per your query

关于javascript - 将 MySQL "where"转换为 Sequelizejs "where",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370466/

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