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

Come creare una tabella da una query SQL

Problema:

Vorresti creare una nuova tabella in un database con dati definiti da una query SQL.

Esempio:

Vorremmo creare la tabella gamer basato su una query SQL. In questa query, selezioniamo i dati da un'altra tabella denominata championship presentato di seguito.

id giocatore punteggio data_campionato
1 alice 14 10-08-2020
2 supervisore 10 28-09-2020
3 uomo felice 0 10-08-2020
4 luka 6 10-08-2020
5 oli 12 10-08-2020
6 grande giocatore 7 12-09-2020

Nel database, creiamo una nuova tabella denominata gamer che memorizzerà i dati in tutte le colonne definite nella tabella championship (id , gamer , score e championship_date ).

Soluzione 1:

CREATE TABLE gamer 
AS  
SELECT
  *
FROM championship;

Discussione:

Se desideri creare una nuova tabella, il primo passo è utilizzare il CREATE TABLE clausola e il nome della nuova tabella (nel nostro esempio:gamer ). Quindi, usa il AS parola chiave e fornire un SELECT istruzione che seleziona i dati per la nuova tabella. Nel nostro esempio, abbiamo selezionato tutte le colonne dalla tabella championship utilizzando l'asterisco (*). Il set di risultati mostra tutti i record nella tabella championship .

Tuttavia, se desideri creare una tabella con solo un sottoinsieme dei record, puoi specificare la query selezionata come nell'esempio seguente.

Soluzione 2:

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

Ecco il set di risultati:

giocatore punteggio data_campionato
alice 14 10-08-2020
uomo felice 0 10-08-2020
lukas 6 10-08-2020
oli 12 10-08-2020

Il SELECT query recupera solo i record con un championship_date data uguale o precedente a 2020-08-10 (WHERE championship_date <= 2020-08-10 ). La nuova tabella memorizza meno colonne rispetto all'esempio precedente (SELECT gamer, score, championship_date ) senza la colonna id .

Una soluzione simile a questo problema consiste nell'usare SELECT INTO clausola per creare una nuova tabella e copiare i dati da un'altra tabella. Dai un'occhiata al codice:

Soluzione 3:

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

La tabella risultante è la stessa. Si noti che questa costruzione non è presente nello standard SQL. In questo comando SQL, scriviamo prima SELECT , quindi l'elenco delle colonne, quindi la parola chiave INTO , e infine il nome della nuova tabella che vogliamo creare. Successivamente, puoi aggiungere WHERE e altre clausole SQL come GROUP BY o HAVING per filtrare i record per la nuova tabella.