【问题标题】:inserting multiple rows with one insert command使用一个插入命令插入多行
【发布时间】:2011-05-08 07:29:57
【问题描述】:

是否可以使用一个插入语句在表中插入多行? 我知道如果我这样做会发生这种情况:

insert into table ( fields ) select values from another_table

但是如果我想插入呢:

row 1 - ( a1, b1, c1 )
row 2 - ( a2, b2, c2 )
...
row n - ( an, bn, cn )

只有一个插入命令?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    两种解决方案(来源:http://appsfr.free.fr/spip.php?article21):

    INSERT ALL
    INTO table (column1, column2)
    VALUES (value1, value2)
    INTO table (column1, column2)
    VALUES (value1, value2)
    ...etc...
    SELECT * FROM DUAL ;
    

    INSERT INTO table (column1, column2)
    SELECT value1, value2 FROM DUAL UNION ALL
    SELECT value1, value2 FROM DUAL UNION ALL
    ...etc...
    SELECT value1, value2 FROM DUAL ;
    

    【讨论】:

      【解决方案2】:

      Insert All

      INSERT ALL
         INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3')
         INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3')
         INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3')
      SELECT * FROM dual;
      

      【讨论】:

        【解决方案3】:
        INSERT INTO products (product_no, name, price) VALUES
            (1, 'Cheese', 9.99),
            (2, 'Bread', 1.99),
            (3, 'Milk', 2.99);
        

        【讨论】:

        • 问题是关于 oracle 那么你为什么要发布 PostgreSQL 答案?
        • 我在回答中删除了“PostgreSQL”。供您参考,这是标准 SQL-92。
        【解决方案4】:
        INSERT INTO College (CustomerID, FirstName, MiddleName, LastName)
        
        SELECT 7, N'Charles', N'Simmons', N'Burns'
        UNION ALL
        SELECT 9, N'Dominic', N'Fred', N'Einsten'
        UNION ALL
        SELECT 12, N'Dave', N'William, N'Bryan';
        

        注意: 每个硬编码字符串值之前的字母 N 将字符串转换为 NVARCHAR 值以匹配列的数据类型。

        【讨论】:

          【解决方案5】:

          不,这是不可能的。正如您已经说过的那样,只有使用提供插入值和行的 select 子句才有可能。

          【讨论】:

          • 至少在阅读了接受的答案以及其他给出的答案之后,您现在肯定知道这是可能的。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-08
          • 1970-01-01
          • 2016-08-13
          • 1970-01-01
          • 2011-10-07
          相关资源
          最近更新 更多