gpt4 book ai didi

mysql - 如何使用带有 FOREIGN KEY 的 SELECT 语句在带有 mysql 包的 Node.js 中插入 INTO

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:44 25 4
gpt4 key购买 nike

我正在尝试根据从 POST 获得的值将新记录插入到我的表中。棘手的部分是我需要根据我的值名称填写外键 ID。我确定我的值(value)观是有效的,问题在于声明。

这是一个 Node.js 应用程序,使用来自 NPM (https://www.npmjs.com/package/mysql) 的 mysql 包。

我的列是 idea.name、idea.short_description、idea.description、idea.difficulty 和 category_id。

我想做的语句是“INSERT INTO idea SET name = '', short_description = '', description = '', difficulty = '', category_id = (SELECT id FROM category WHERE name = '')”

选择部分是问题所在,因为我尝试附加一个默认数字 (1),但它可以正常工作。

我必须处理 mysql 包:

db.query('INSERT INTO idea SET name = ?, short_description = ?, description = ?, difficulty = ?, category_id = 1', [name, short_description, description, difficulty, category_id], (err, result) => {
if (err) throw err
cb(result)
})

我想要这样的东西:

db.query('INSERT INTO idea SET name = ?, short_description = ?, description = ?, difficulty = ?, category = (SELECT id FROM category WHERE name = ' + category ')', [name, short_description, description, difficulty, category], (err, result) => {
if (err) throw err
cb(result)
})

我希望通过我的外键名称获得我的外键 ID。所以我尝试使用 category.name 查找 category.id。

提前致谢!

最佳答案

您的问题似乎是您希望在执行 INSERT 时运行子查询。这就是我在您的代码中看到的:

INSERT INTO idea
SET name = ?
, short_description = ?
, description = ?
, difficulty = ?
, category = (
SELECT id
FROM category
WHERE name = ?
)

那么为什么不将 INSERT+SELECT 拆分为两步过程,首先是 SELECT,然后是 INSERT

使用这种方法你需要两个查询:

  1. 选择
SELECT id
FROM category
WHERE name = ?
  1. 插入
INSERT INTO idea
SET name = ?
, short_description = ?
, description = ?
, difficulty = ?
, category = ?

还有一个不错的副作用是,您可以在某个地方决定在找不到类别 ID 时会发生什么。

关于mysql - 如何使用带有 FOREIGN KEY 的 SELECT 语句在带有 mysql 包的 Node.js 中插入 INTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55405906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com