从其他表中选择一个值时插入

时间:2020-08-20 11:27:09

标签: mysql sql mariadb

我想将insert个新值where插入表INSERT INTO table1 (itemId, reservedId) VALUES (SELECT id FROM table2 WHERE condition, 213) ; ,其中一个值是从另一个有条件的表中选择的,另一个值是一个常数(硬编码)

此命令给出语法错误

select key, name from localtab where key not in (select key from remotetab);

错误消息:第2行的语法错误

3 个答案:

答案 0 :(得分:4)

语法为INSERT . . . SELECT

INSERT INTO table1 (itemId, reservedId) 
     SELECT id, 123
     FROM table2
     WHERE condition ;

不需要VALUES

答案 1 :(得分:3)

您已经看到,您不能混合值和选择这样的语句。但是,您可以从同一张表中选择要插入的文字值(请注意,您不应有values子句-它应由select语句替换):

INSERT INTO table1 (itemId, reservedId)
SELECT id, 213 FROM table2 WHERE condition;

答案 2 :(得分:2)

您可以使用

insert into yourtable(...) values(...)[, (...)...]

insert into yourtable(...) select ...

您的错误是您混淆了两种语法。您将values(...)包裹在select周围不需要>

INSERT INTO table1 (itemId, reservedId) 
SELECT id, 213 
FROM table2 
WHERE condition;

请注意,213是reservedId的值,与where子句无关。