Javascript “转换MySQL”;其中;“给后遗症”;其中;
我试图写“WHERE(CASE…THEN…ELSE…END)>0”来续写v3.33,但还没有找到解决方案 已尝试sequelize.literal(“…”),但无效。 使用“have”是解决方案之一,但它对大数据提取的性能没有好处,而且速度是前者的两倍 这只是MySQL代码的一个示例,但与我想要实现的非常接近Javascript “转换MySQL”;其中;“给后遗症”;其中;,javascript,mysql,sequelize.js,Javascript,Mysql,Sequelize.js,我试图写“WHERE(CASE…THEN…ELSE…END)>0”来续写v3.33,但还没有找到解决方案 已尝试sequelize.literal(“…”),但无效。 使用“have”是解决方案之一,但它对大数据提取的性能没有好处,而且速度是前者的两倍 这只是MySQL代码的一个示例,但与我想要实现的非常接近 SELECT (CASE `a`.`fee` IS NULL THEN `a.b`.`fee` ELSE `a`.`fee` END) AS `_fee` FROM `a` W
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.where
和sequelize.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 } )
]
}
注意:这可能无法用作别名a
。表的类型可能是diff,您可以根据查询进行调试和更改
虽然我的代码没有像我预期的那样工作,因为我的查询仍然有点不正确,但是这段代码工作正常!它生成的SQL正是我想要的。只是想知道,在生成的SQL中,大小写周围有
(
)
双大括号,比如((CASE…END)>0)
会有什么不同,我不知道,因为我的查询还不起作用。谢谢回答接受!
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 } )
]
}