我想将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行的语法错误
答案 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
子句无关。