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

14voto

Matt Punkte 13957
INSERT INTO yourtable
SELECT fielda, fieldb, fieldc
FROM donortable;

Dies funktioniert mit allen DBMS

14voto

elijah7 Punkte 328

Das hat bei mir funktioniert:

insert into table1 select * from table2

Der Satz ist ein wenig anders als der von Oracle.

13voto

Gaurav Punkte 459
INSERT INTO FIRST_TABLE_NAME (COLUMN_NAME)
SELECT  COLUMN_NAME
FROM    ANOTHER_TABLE_NAME 
WHERE CONDITION;

0 Stimmen

@ggorlen Für mich sieht es ziemlich selbstverständlich aus

0 Stimmen

Sie wurde in der Warteschlange für die Überprüfung als reine Code-Antwort gekennzeichnet. Ich sehe allerdings, worauf Sie hinauswollen - im Kontext der meisten Antworten auf dieser Seite gibt es nicht viel zu sagen, jetzt, wo ich sie in ihrer natürlichen Umgebung sehe.

13voto

Faiz Punkte 5161

Für Microsoft SQL Server empfehle ich, die Interpretation des SYNTAX zu lernen, das auf MSDN bereitgestellt wird. Mit Google ist es einfacher denn je, nach der Syntax zu suchen.

Versuchen Sie in diesem speziellen Fall

Google: einfügen site:microsoft.com

Das erste Ergebnis wird sein http://msdn.microsoft.com/en-us/library/ms174335.aspx

scrollen Sie zum Beispiel ("Verwendung der Optionen SELECT und EXECUTE zum Einfügen von Daten aus anderen Tabellen"), wenn Sie Schwierigkeiten haben, die oben auf der Seite angegebene Syntax zu interpretieren.

[ WITH <common_table_expression> [ ,...n ] ]
INSERT 
{
        [ TOP ( expression ) [ PERCENT ] ] 
        [ INTO ] 
        { <object> | rowset_function_limited 
          [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
        }
    {
        [ ( column_list ) ] 
        [ <OUTPUT Clause> ]
        { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ] 
        | derived_table       <<<<------- Look here ------------------------
        | execute_statement   <<<<------- Look here ------------------------
        | <dml_table_source>  <<<<------- Look here ------------------------
        | DEFAULT VALUES 
        }
    }
}
[;]

Dies sollte auch für jedes andere dort verfügbare RDBMS gelten. Es macht keinen Sinn, sich die gesamte Syntax für alle Produkte zu merken, IMO.

1 Stimmen

Ich bin da ganz anderer Meinung. Ich schaue mir diese Syntaxerklärungen schon seit Jahren an und kann mir immer noch keinen Reim darauf machen. Beispiele sind viel nützlicher

0 Stimmen

Das ist keine Antwort, sondern nur der Hinweis: "Lesen Sie die Unterlagen", und das war's.

12voto

Manish Vadher Punkte 1396

Der beste Weg, um mehrere Datensätze aus anderen Tabellen einzufügen.

INSERT  INTO dbo.Users
            ( UserID ,
              Full_Name ,
              Login_Name ,
              Password
            )
            SELECT  UserID ,
                    Full_Name ,
                    Login_Name ,
                    Password
            FROM    Users_Table
            (INNER JOIN / LEFT JOIN ...)
            (WHERE CONDITION...)
            (OTHER CLAUSE)

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