Javascript “转换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

我试图写“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`
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 } )
    ]
}