我正在尝试使用来自另一个表的输入插入到
表中。 虽然这对于许多数据库引擎来说是完全可行的,但我似乎总是很难记住当前SQL
引擎(MySQL,Oracle,SQL Server,Informix和DB2)的正确语法。
SQL标准(例如SQL-92)中是否有一种“银弹”语法,允许我插入值而不必担心底层数据库?
尝试:
INSERT INTO table1 ( column1 )
SELECT col1
FROM table2
这是标准的ANSI SQL,可以在任何DBMS上工作
它肯定适用于:
ClaudeHoule的回答是:应该可以正常工作,而且您还可以有多列和其他数据:
INSERT INTO table1 ( column1, column2, someInt, someVarChar )
SELECT table2.column1, table2.column2, 8, 'some string etc.'
FROM table2
WHERE table2.ID = 7;
我只在Access,SQL2000/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))