小编典典

Insert into ... values ( SELECT ... FROM ... )

sql

我正在尝试INSERT INTO使用来自另一个表的输入来创建一个表。尽管这对于许多数据库引擎来说是完全可行的,但我似乎总是很难记住当时SQL引擎(MySQLOracleSQL ServerInformixDB2)的正确语法。


阅读 195

收藏
2022-02-20

共2个答案

小编典典

尝试:

INSERT INTO table1 ( column1 )
SELECT  col1
FROM    table2  

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

它绝对适用于:

  • Oracle
  • MS SQL Server
  • MySQL
  • Postgres
  • SQLite v3
  • Teradata
  • DB2
  • Sybase
  • Vertica
  • HSQLDB
  • H2
  • AWS RedShift
  • SAP HANA
  • Google Spanner
2022-02-20
小编典典

应该可以正常工作,您还可以拥有多个列和其他数据:

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。

2022-02-20