sql >> Base de Datos >  >> RDS >> Database

Cómo crear una tabla a partir de una consulta SQL

Problema:

Le gustaría crear una nueva tabla en una base de datos con datos definidos por una consulta SQL.

Ejemplo:

Nos gustaría crear la tabla gamer basado en una consulta SQL. En esta consulta, seleccionamos datos de otra tabla llamada championship presentado a continuación.

id jugador puntuación fecha_de_campeonato
1 alicia 14 2020-08-10
2 supervisor 10 2020-09-28
3 hombre feliz 0 2020-08-10
4 lucas 6 2020-08-10
5 oli 12 2020-08-10
6 gran jugador 7 2020-09-12

En la base de datos, creemos una nueva tabla llamada gamer que almacenará datos en todas las columnas definidas en la tabla championship (id , gamer , score y championship_date ).

Solución 1:

CREATE TABLE gamer 
AS  
SELECT
  *
FROM championship;

Discusión:

Si desea crear una nueva tabla, el primer paso es usar CREATE TABLE cláusula y el nombre de la nueva tabla (en nuestro ejemplo:gamer ). Luego, usa el AS palabra clave y proporcione un SELECT instrucción que selecciona datos para la nueva tabla. En nuestro ejemplo, seleccionamos todas las columnas de la tabla championship utilizando el asterisco (*). El conjunto de resultados muestra todos los registros en la tabla championship .

Sin embargo, si desea crear una tabla con solo un subconjunto de registros, puede especificar la consulta seleccionada como en el ejemplo a continuación.

Solución 2:

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

Aquí está el conjunto de resultados:

jugador puntuación fecha_de_campeonato
alicia 14 2020-08-10
hombre feliz 0 2020-08-10
lukas 6 2020-08-10
oli 12 2020-08-10

El SELECT la consulta recupera solo los registros con una championship_date fecha igual o anterior a 2020-08-10 (WHERE championship_date <= 2020-08-10 ). La nueva tabla almacena menos columnas que en el ejemplo anterior (SELECT gamer, score, championship_date ) sin la columna id .

Una solución similar a este problema es utilizar SELECT INTO cláusula para crear una nueva tabla y copiar datos de otra tabla. Echa un vistazo al código:

Solución 3:

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

La tabla resultante es la misma. Tenga en cuenta que esta construcción no está presente en el estándar SQL. En este comando SQL, primero escribimos SELECT , luego la lista de columnas, luego la palabra clave INTO , y finalmente el nombre de la nueva tabla que queremos crear. A continuación, puede agregar WHERE y otras cláusulas SQL como GROUP BY o HAVING para filtrar registros para la nueva tabla.