mysql - 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.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))
参考:
推荐阅读
- ruby-on-rails - Rails/SimpleForm:如何在表单中嵌套 has_many 关联的字段?
- php - 使用子进程从默认的 Ubunty Python 调用它时出现 Anaconda 权限错误
- node.js - nodejs中for循环中fs readfile的索引
- c# - 如何将控制器与监听器结合起来?
- hyperledger-fabric - 用于在多个 AWS 实例上进行生产的 Hyperledger 结构。以及如何获得 CA 证书进行生产
- anaconda - 安装后找不到 Anaconda Navigator 或 Conda
- reactjs - 设置“multiple”时,出现错误下拉“value”必须是一个数组
- angular - 无法将我的库 Angular 链接到另一个库 Angular
- python - 在python中为警报程序部分播放音频文件
- angular - 将角度组件动态转换为 HTML