Suche…


Daten von einer Tabelle in eine andere kopieren

Dieser Code wählt Daten aus einer Tabelle aus und zeigt sie im Abfrage-Tool (normalerweise SSMS)

SELECT Column1, Column2, Column3 FROM MySourceTable;

Dieser Code fügt diese Daten in eine Tabelle ein:

INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;

Kopieren Sie die Daten in eine Tabelle und erstellen Sie diese sofort

Dieser Code wählt Daten aus einer Tabelle aus:

SELECT Column1, Column2, Column3 FROM MySourceTable;

Dieser Code erstellt eine neue Tabelle mit dem Namen MyNewTable und MyNewTable diese Daten hinzu

SELECT Column1, Column2, Column3 
INTO MyNewTable
FROM MySourceTable;

Verschieben von Daten in eine Tabelle (unter Annahme einer eindeutigen Schlüsselmethode)

Um Daten zu verschieben , fügen Sie sie zuerst in das Ziel ein und löschen dann alles, was Sie aus der Quelltabelle eingefügt haben. Dies ist keine normale SQL-Operation, kann aber aufschlussreich sein

Was hast du eingefügt? Normalerweise benötigen Sie in Datenbanken eine oder mehrere Spalten, die Sie zur eindeutigen Identifizierung von Zeilen verwenden können, sodass wir davon ausgehen und diese verwenden.

Diese Anweisung wählt einige Zeilen aus

SELECT Key1, Key2, Column3, Column4 FROM MyTable;

Zuerst fügen wir diese in unsere Zieltabelle ein:

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;

Key1 nun angenommen wird, dass Datensätze in beiden Tabellen für Key1 , Key2 eindeutig Key1 , Key2 wir damit Daten aus der Key2 suchen und löschen

DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

Dies funktioniert nur korrekt, wenn Key1 , Key2 in beiden Tabellen eindeutig sind

Schließlich wollen wir nicht, dass die Arbeit zur Hälfte erledigt ist. Wenn wir dies in einer Transaktion abschließen, werden entweder alle Daten verschoben oder nichts passiert. Dadurch wird sichergestellt, dass wir die Daten nicht einfügen und die Daten nicht aus der Quelle löschen können.

BEGIN TRAN;

INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;


DELETE MyTable
WHERE EXISTS (
    SELECT * FROM TargetTable 
    WHERE TargetTable.Key1 = SourceTable.Key1
    AND TargetTable.Key2 = SourceTable.Key2
);

COMMIT TRAN;


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow