具有多个嵌套 SELECT 的 MySQL INSERT
Posted
技术标签:
【中文标题】具有多个嵌套 SELECT 的 MySQL INSERT【英文标题】:MySQL INSERT with multiple nested SELECTs 【发布时间】:2011-11-25 22:29:58 【问题描述】:这样的查询可能吗? 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')
【问题讨论】:
【参考方案1】:我刚刚测试了以下(有效):
insert into test (id1, id2) values (1, (select max(id) from test2)), (2, (select max(id) from test2));
我想问题是你的选择周围没有 ()s,因为没有它这个查询将无法工作。
【讨论】:
【参考方案2】:当您有这样的子查询时,它必须只返回一列和一行。如果您的子查询确实只返回一行,那么您需要在它们周围加上括号,正如@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' )
【讨论】:
谢谢!尽管问题确实缺少括号,但您的评论很有教育意义!以上是关于具有多个嵌套 SELECT 的 MySQL INSERT的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中使用多个条件访问嵌套的 MySQL Select。
mysql中insert与select的嵌套使用解决组合字段插入问题
具有多个 WHERE 和 SELECT 条件的更新 - MySql