You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求Sequelize替代原生SQL查询方案:转换指定查询语句

原生SQL转Sequelize查询实现

原生SQL逻辑

查询指定user_id对应的recommended_plan表中,创建时间(created_at)最晚的那条记录。

方案一:对应原生子查询结构

直接映射原生SQL的子查询逻辑,用Sequelize语法实现:

const { Op } = require('sequelize');
const RecommendedPlan = require('../models/recommendedPlan'); // 替换为你的模型实际路径

async function getLatestRecommendedPlan(userId) {
  const latestPlan = await RecommendedPlan.findOne({
    where: {
      user_id: userId,
      created_at: {
        [Op.eq]: RecommendedPlan.sequelize.literal(`(SELECT MAX(created_at) FROM recommended_plan WHERE user_id = ${userId})`)
      }
    }
  });
  return latestPlan;
}

方案二:更简洁的排序限制方式

通过倒序排序created_at并仅取第一条,实现相同效果,代码可读性更强:

const RecommendedPlan = require('../models/recommendedPlan'); // 替换为你的模型实际路径

async function getLatestRecommendedPlan(userId) {
  const latestPlan = await RecommendedPlan.findOne({
    where: { user_id: userId },
    order: [['created_at', 'DESC']],
    limit: 1
  });
  return latestPlan;
}

两种方案均可得到目标结果,方案二在多数场景下性能更优,代码也更简洁。

内容的提问来源于stack exchange,提问作者Abhishek Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:25:17