如何将含date_part的SQL查询转换为Sequelize查询语句?
正确的Sequelize改写方案
你的原始SQL是获取Arts表中date字段年份的最小值,当前尝试的代码存在两处问题:
- 误用了
MAX聚合函数,和原SQL的MIN逻辑不符 - 字段名写为
dateField,与原SQL的"date"不匹配
正确的Sequelize查询语句如下:
Art.findOne({ attributes: [ [sequelize.fn('MIN', sequelize.fn('date_part', 'year', sequelize.col('date'))), 'min_year'] ] })
补充说明:
- 外层用
sequelize.fn('MIN', ...)包裹内层的date_part函数,完全还原原SQL的min(date_part(...))逻辑 - 给聚合结果指定别名
min_year,后续可通过返回对象的min_year属性直接获取计算值 - 用
sequelize.col('date')精准对应原表的date字段,避免字段名解析错误
内容的提问来源于stack exchange,提问作者Satrio Ponco
相关产品推荐
相关产品推荐

