sql >> Database teknologi >  >> RDS >> Database

Sådan opretter du en tabel fra en SQL-forespørgsel

Problem:

Du vil gerne oprette en ny tabel i en database med data defineret af en SQL-forespørgsel.

Eksempel:

Vi vil gerne oprette tabellen gamer baseret på en SQL-forespørgsel. I denne forespørgsel vælger vi data fra en anden tabel ved navn championship præsenteret nedenfor.

id gamer score championship_date
1 alice 14 2020-08-10
2 supervisor 10 2020-09-28
3 happyman 0 2020-08-10
4 lukas 6 2020-08-10
5 oli 12 2020-08-10
6 biggamer 7 2020-09-12

Lad os i databasen oprette en ny tabel med navnet gamer som vil gemme data i alle de kolonner, der er defineret i tabellen championship (id , gamer , score , og championship_date ).

Løsning 1:

CREATE TABLE gamer 
AS  
SELECT
  *
FROM championship;

Diskussion:

Hvis du gerne vil oprette en ny tabel, er det første trin at bruge CREATE TABLE klausul og navnet på den nye tabel (i vores eksempel:gamer ). Brug derefter AS søgeord og angiv en SELECT sætning, der vælger data til den nye tabel. I vores eksempel valgte vi alle kolonner fra tabellen championship ved at bruge stjernen (*). Resultatsættet viser alle rekorderne i tabellen championship .

Men hvis du vil oprette en tabel med kun en delmængde af posterne, kan du angive den valgte forespørgsel som i eksemplet nedenfor.

Løsning 2:

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

Her er resultatsættet:

gamer score championship_date
alice 14 2020-08-10
happyman 0 2020-08-10
lukas 6 2020-08-10
oli 12 2020-08-10

SELECT forespørgslen henter kun posterne med en championship_date dato lig med eller ældre end 2020-08-10 (WHERE championship_date <= 2020-08-10 ). Den nye tabel gemmer færre kolonner end i det forrige eksempel (SELECT gamer, score, championship_date ) uden kolonnen id .

En lignende løsning på dette problem er at bruge SELECT INTO klausul for at oprette en ny tabel og kopiere data fra en anden tabel. Tag et kig på koden:

Løsning 3:

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

Den resulterende tabel er den samme. Bemærk, at denne konstruktion ikke er til stede i SQL-standarden. I denne SQL-kommando skriver vi først SELECT , derefter listen over kolonner, ved siden af ​​søgeordet INTO , og til sidst navnet på den nye tabel, vi vil oprette. Dernæst kan du tilføje WHERE og andre SQL-sætninger såsom GROUP BY eller HAVING for at filtrere poster for den nye tabel.


  1. MS-Access Class Module og VBA

  2. Tegn på, at din database ikke længere fungerer for dig

  3. Er der nogen ulemper ved altid at bruge nvarchar(MAX)?

  4. MySQL's alternativ til T-SQL's MED BÅND