我正在尝试在表中插入新标签。标签有一个称为type的列,它是一个int。我还有一个表,将类型从字符串映射为int。
let sql = `INSERT INTO tag (name, type) VALUES (${tag.name}, SELECT id FROM tag_type WHERE type=${tag.type});`
这给了我一个语法错误。从另一个表插入值的正确方法是什么?
答案 0 :(得分:0)
您的查询有两个问题。首先,由于tag.type
和tag.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}';`