【问题标题】:MySQL INSERT with multiple nested SELECTs具有多个嵌套 SELECT 的 MySQL INSERT
【发布时间】: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')

【问题讨论】:

    标签: sql select insert nested


    【解决方案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' )
      

      【讨论】:

      • 谢谢!尽管问题确实缺少括号,但您的评论很有教育意义!
      猜你喜欢
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      相关资源
      最近更新 更多