SELECT INTO
Unterabfragen & Fortgeschrittenes
Bedeutung
SELECT INTO kopiert Daten aus einer Abfrage in eine neue Tabelle, die dabei automatisch angelegt wird. Das ist praktisch, um schnell eine Sicherung anzulegen oder eine Auswertung als eigene Tabelle abzulegen.
Syntax (SQL Server)
SELECT spalten INTO neue_tabelle FROM quell_tabelle WHERE bedingung;
Die Zieltabelle darf noch nicht existieren – sie wird mit den passenden Spalten neu erstellt.
Beispiel: deutsche Kunden sichern
SELECT KundenID, Name, Stadt INTO Kunden_DE FROM Kunden WHERE Land = 'DE';
Danach enthält die neue Tabelle Kunden_DE:
| KundenID | Name | Stadt |
|---|---|---|
| 1 | Müller GmbH | Berlin |
| 2 | Schmidt AG | Hamburg |
Leere Struktur kopieren
Willst du nur die Struktur ohne Daten, hängst du eine immer-falsche Bedingung an:
SELECT * INTO Kunden_Leer FROM Kunden WHERE 1 = 0;
Stolperfalle: MySQL kennt kein SELECT INTO (für Tabellen)
In MySQL und PostgreSQL erzeugt SELECT … INTO keine Tabelle (dort dient SELECT INTO dem Speichern in Variablen). Nutze stattdessen CREATE TABLE … AS SELECT:
CREATE TABLE Kunden_DE AS SELECT KundenID, Name, Stadt FROM Kunden WHERE Land = 'DE';
Welche Aussage über die Zieltabelle bei SELECT INTO stimmt?
Hinweis
Willst du Daten in eine bereits bestehende Tabelle einfügen, ist nicht SELECT INTO, sondern INSERT INTO SELECT das richtige Werkzeug.