这样的查询可能吗? MySQL给了我一个语法错误。具有嵌套选择的多个插入值...
INSERT INTO pv_indices_fields (index_id, veld_id)
VALUES
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val1'),
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val2')
答案 0 :(得分:28)
我刚刚测试了以下(有效):
insert into test (id1, id2) values (1, (select max(id) from test2)), (2, (select max(id) from test2));
我想问题是你没有得到()s你的选择,因为如果没有它,这个查询将无法工作。
答案 1 :(得分:13)
当你有这样的子查询时,它必须返回一列而一行。如果你的子查询只返回一行,那么你需要在它们周围括号,如@ Thor84no注意到的那样。
如果他们返回(或可能返回)超过行,请尝试改为:
INSERT INTO pv_indices_fields (index_id, veld_id)
SELECT '1', id
FROM pv_fields
WHERE col1='76'
AND col2 IN ('val1', 'val2')
或者如果您的情况非常不同:
INSERT INTO pv_indices_fields (index_id, veld_id)
( SELECT '1', id FROM pv_fields WHERE col1='76' AND col2='val1' )
UNION ALL
( SELECT '1', id FROM pv_fields WHERE col1='76' AND col2='val2' )