1826 Stimmen

Einfügen in ... Werte ( SELECT ... FROM ... )

Ich versuche, die INSERT INTO einer Tabelle unter Verwendung der Eingabe einer anderen Tabelle. Obwohl dies für viele Datenbank-Engines durchaus machbar ist, scheine ich mich immer an die korrekte Syntax für die SQL Motor des Tages ( MySQL , Oracle , SQL-Server , Informix y DB2 ).

Gibt es eine Patentrezept-Syntax, die aus einem SQL-Standard stammt (z. B., SQL-92 ), die es mir ermöglichen würde, die Werte einzufügen, ohne mich um die zugrunde liegende Datenbank zu kümmern?

2 Stimmen

Dieses Beispiel funktioniert: insert into tag_zone select @tag,zoneid,GETDATE(),@positiong.STIntersects(polygon) from zone

39voto

logan Punkte 7373

Anstelle von VALUES Teil von INSERT Abfrage, verwenden Sie einfach SELECT Abfrage wie unten.

INSERT INTO table1 ( column1 , 2, 3... )
SELECT col1, 2, 3... FROM table2

37voto

Santhosh Punkte 1731

Die meisten Datenbanken folgen einer einfachen Syntax,

INSERT INTO TABLE_NAME
SELECT COL1, COL2 ...
FROM TABLE_YOU_NEED_TO_TAKE_FROM
;

Alle Datenbanken, die ich verwendet habe, folgen dieser Syntax, DB2 , SQL Server , MY SQL , PostgresQL

32voto

northben Punkte 5010

Dies kann ohne Angabe der Spalten in der Datei INSERT INTO Teil, wenn Sie Werte für alle Spalten der Tabelle SELECT Teil.

Angenommen, Tabelle1 hat zwei Spalten. Diese Abfrage sollte funktionieren:

INSERT INTO table1
SELECT  col1, col2
FROM    table2

Dies WÜRDE NICHT funktionieren (Wert für col2 nicht angegeben ist):

INSERT INTO table1
SELECT  col1
FROM    table2

Ich verwende MS SQL Server. Ich weiß nicht, wie andere RDMS funktionieren.

26voto

Dasikely Punkte 555

Verwenden Sie einfach Klammern für SELECT Klausel in INSERT. Zum Beispiel wie folgt:

INSERT INTO Table1 (col1, col2, your_desired_value_from_select_clause, col3)
VALUES (
   'col1_value', 
   'col2_value',
   (SELECT col_Table2 FROM Table2 WHERE IdTable2 = 'your_satisfied_value_for_col_Table2_selected'),
   'col3_value'
);

25voto

nsv Punkte 10549

Dies ist ein weiteres Beispiel für die Verwendung von Werten mit Select:

INSERT INTO table1(desc, id, email) 
SELECT "Hello World", 3, email FROM table2 WHERE ...

1 Stimmen

Alte Antwort und immer noch nützlich. Ziemlich einfach und offensichtlich, aber genau deckt meine Bedürfnisse. Danke!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X