Database
 sql >> Datenbank >  >> RDS >> Database

So erstellen Sie eine Tabelle aus einer SQL-Abfrage

Problem:

Sie möchten eine neue Tabelle in einer Datenbank mit Daten erstellen, die durch eine SQL-Abfrage definiert wurden.

Beispiel:

Wir möchten den Tisch gamer basierend auf einer SQL-Abfrage. In dieser Abfrage wählen wir Daten aus einer anderen Tabelle namens championship unten dargestellt.

id Gamer Ergebnis championship_date
1 Alice 14 2020-08-10
2 Betreuer 10 2020-09-28
3 glücklicher Mann 0 2020-08-10
4 Lukas 6 2020-08-10
5 oli 12 2020-08-10
6 Biggamer 7 2020-09-12

Lassen Sie uns in der Datenbank eine neue Tabelle mit dem Namen gamer die Daten in allen Spalten speichert, die in der Tabelle championship (id , gamer , score und championship_date ).

Lösung 1:

CREATE TABLE gamer 
AS  
SELECT
  *
FROM championship;

Diskussion:

Wenn Sie eine neue Tabelle erstellen möchten, verwenden Sie zunächst den CREATE TABLE -Klausel und den Namen der neuen Tabelle (in unserem Beispiel:gamer ). Verwenden Sie dann den AS Schlüsselwort und geben Sie ein SELECT ein -Anweisung, die Daten für die neue Tabelle auswählt. In unserem Beispiel haben wir alle Spalten aus der Tabelle championship mit dem Sternchen (*). Die Ergebnismenge zeigt alle Datensätze in der Tabelle championship .

Wenn Sie jedoch eine Tabelle nur mit einer Teilmenge der Datensätze erstellen möchten, können Sie die ausgewählte Abfrage wie im Beispiel unten angeben.

Lösung 2:

CREATE TABLE gamer 
AS  
SELECT
  gamer, score, championship_date
FROM championship 
WHERE championship_date <= 2020-08-10;

Hier ist die Ergebnismenge:

Spieler Ergebnis championship_date
Alice 14 2020-08-10
glücklicher Mann 0 2020-08-10
Lukas 6 2020-08-10
oli 12 2020-08-10

Die SELECT Abfrage ruft nur die Datensätze mit einem championship_date ab Datum gleich oder älter als 10.08.2020 (WHERE championship_date <= 2020-08-10 ). Die neue Tabelle speichert weniger Spalten als im vorherigen Beispiel (SELECT gamer, score, championship_date ) ohne die Spalte id .

Eine ähnliche Lösung für dieses Problem ist die Verwendung von SELECT INTO -Klausel, um eine neue Tabelle zu erstellen und Daten aus einer anderen Tabelle zu kopieren. Sehen Sie sich den Code an:

Lösung 3:

SELECT
  gamer, score, championship_date
INTO gamer
FROM championship 
WHERE championship_date <= 2020-08-10;

Die resultierende Tabelle ist dieselbe. Beachten Sie, dass diese Konstruktion im SQL-Standard nicht vorhanden ist. In diesem SQL-Befehl schreiben wir zuerst SELECT , dann die Liste der Spalten, als nächstes das Schlüsselwort INTO , und schließlich den Namen der neuen Tabelle, die wir erstellen möchten. Als nächstes können Sie WHERE hinzufügen und andere SQL-Klauseln wie GROUP BY oder HAVING um Datensätze für die neue Tabelle zu filtern.