mySQL:在插入查询中插入查询值

时间:2019-04-06 00:12:22

标签: mysql

我正在尝试在表中插入新标签。标签有一个称为type的列,它是一个int。我还有一个表,将类型从字符串映射为int。

let sql = `INSERT INTO tag (name, type) VALUES (${tag.name}, SELECT id FROM tag_type WHERE type=${tag.type});`

这给了我一个语法错误。从另一个表插入值的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您的查询有两个问题。首先,由于tag.typetag.name是字符串,因此必须将它们用SELECT括在单引号中。其次,子查询必须放在括号()中。这应该起作用:

let sql = `INSERT INTO tag (name, type) VALUES ('${tag.name}', (SELECT id FROM tag_type WHERE type='${tag.type}'));`

使用INSERT ... SELECT查询编写这种查询会更干净,将值作为常量添加到SELECT

let sql = `INSERT INTO tag (name, type) SELECT '${tag.name}', id FROM tag_type WHERE type='${tag.type}';`