首页 > 解决方案 > Sequelize ORM中的MySQL查询与外键

问题描述

我有这个疑问,

UPDATE physics_tbls SET Level_id = (SELECT level_id FROM level_tbl WHERE Level = 'Higher') WHERE id = 192;

我需要找到 Sequelize 等价物。

所以解释一下,我有一个表physics_tbls,其中有一个字段Level_id,它具有另一个名为level_tbls 的表中的字段Level 的外键。

当我更新 Level_id 时,我需要在 level_tbls 表中的“Higher”上执行 SELECT,以查看 Level_id 应该输入什么 id

我应该在这里使用“通过”

我无法理解这一点

任何帮助将不胜感激。

谢谢,

关注问题:使用带有 Sequelize ORM 和文字的原始 SQL 查询

标签: mysqlsequelize.js

解决方案


使用原始查询

sequelize.query("UPDATE physics_tbls SET Level_id = (SELECT level_id FROM level_tbl WHERE Level = 'Higher') WHERE id = 192;").then(([results, metadata]) => {
  // Results will be an empty array and metadata will contain the number of affected rows.
})

或者

子查询可以像这样完成......

physics_tbls.update(
    { Level_id : [clout.sequelize.literal("SELECT level_id FROM level_tbl WHERE Level = 'Higher'"))] }, 
    { where: { _id: 192 } }
).then(result => handleResult(result))
 .catch(err => handleError(err)) 

参考:


推荐阅读