插入...值(SELECT ... FROM ...)

我正在尝试使用来自另一个表的输入INSERT INTO到表中。 尽管对于许多数据库引擎来说这是完全可行的,但我总是很难记住当天的SQL引擎(MySQL,Oracle,SQL Server,Informix和DB2)的正确语法。

是否存在来自SQL standard (例如SQL-92)的银牌语法,它可以让我插入值而不用担心底层数据库?


尝试:

INSERT INTO table1 ( column1 )
SELECT  col1
FROM    table2  

这是标准的ANSI SQL,应该适用于任何DBMS

它绝对适用于:

  • 神谕
  • MS SQL Server
  • MySQL的
  • Postgres的
  • SQLite v3
  • Teradata数据
  • DB2
  • SYBASE
  • Vertica的
  • HSQLDB
  • H2
  • AWS RedShift
  • SAP HANA

  • @ Shadow_x99:应该可以正常工作,并且您还可以有多个列和其他数据:

    INSERT INTO table1 ( column1, column2, someInt, someVarChar )
    SELECT  table2.column1, table2.column2, 8, 'some string etc.'
    FROM    table2
    WHERE   table2.ID = 7;
    

    编辑:我应该提到,我只在Access,SQL 2000/2005 / Express,MySQL和PostgreSQL中使用了这种语法,因此应该涵盖这些语法。 一位评论者指出,它将与SQLite3一起工作。


    要从另一个表中获取多值INSERT中的一个值,我在SQLite3中执行了以下操作:

    INSERT INTO column_1 ( val_1, val_from_other_table ) 
    VALUES('val_1', (SELECT  val_2 FROM table_2 WHERE val_2 = something))
    
    链接地址: http://www.djcxy.com/p/2751.html

    上一篇: Insert into ... values ( SELECT ... FROM ... )

    下一篇: Potential other uses of a jabber server