Sequelize.js Sequelize:将where子句应用于子查询
我试图在子查询中添加一个where子句,但是我得到了下面的错误。我想做的是不可能的吗Sequelize.js Sequelize:将where子句应用于子查询,sequelize.js,Sequelize.js,我试图在子查询中添加一个where子句,但是我得到了下面的错误。我想做的是不可能的吗 Error: Support for literal replacements in the `where` object has been removed. models.Message.findAll({ attributes: ['createdAt', 'content', [ sequelize.literal(` RANK() OVER
Error: Support for literal replacements in the `where` object has been removed.
models.Message.findAll({
attributes: ['createdAt', 'content',
[
sequelize.literal(`
RANK() OVER (
PARTITION BY DATE_FORMAT('createdAt', '%Y-%m-%d')
ORDER BY createdAt DESC
)`),
'ranked',
]],
where: [sequelize.literal('ranked') <= 3]
})
错误:已删除对`where`对象中的文字替换的支持。
models.Message.findAll({
属性:['createdAt','content',
[
sequelize.literal(`
秩()超过(
按日期分区\u格式('createdAt','%Y-%m-%d')
按createdAt DESC排序
)`),
“排名”,
]],
式中:[sequelize.literal('ranked')我想您应该使用sequelize.where
将sequelize.literal
与某些条件结合起来:
where: sequelize.where(sequelize.literal('ranked'), '<=', 3)
where:sequelize.where(sequelize.literal('ranked'),”使用以下代码:
where: sequelize.where(sequelize.col('ranked'), '<=', 3)
where:sequelize.where(sequelize.col('ranged')),'谢谢您的输入!这消除了错误:在
where`对象中支持文字替换。`但是我现在得到了错误:Unknown column'在'where子句'
中排名。
对不起,我没有看到排名
不是真正的列。然后您可以尝试整个RANK()…
sequelize中的表达式。where
而不是排名
我假设这是您的建议?where:sequelize.where(sequelize.literal(
RANK()OVER(按日期划分格式('createdAt','%Y-%m-%d'))按createdAt DESC订购)),'不幸的是,它说我不能在此上下文中使用rank函数OK,你能在你的帖子中添加一个需要的SQL查询,这样我们就可以了解你试图实现的目标吗?'我尝试了这一点,但我得到了错误:SequelizeDatabaseError:Unknown column'ranked'在'where子句'
中排名前使用带点的模型名称,例如where:sequelize.where(sequelize.col('modelName.ranged'),'
where: sequelize.where(sequelize.col('ranked'), '<=', 3)