sql >> Databáze >  >> RDS >> Database

Jak vytvořit tabulku z SQL dotazu

Problém:

Chcete vytvořit novou tabulku v databázi s daty definovanými SQL dotazem.

Příklad:

Rádi bychom vytvořili tabulku gamer na základě SQL dotazu. V tomto dotazu vybíráme data z jiné tabulky s názvem championship níže.

id hráč skóre datum_championátu
1 alice 14 2020-08-10
2 vedoucí 10 28. 9. 2020
3 šťastný muž 0 2020-08-10
4 lukas 6 2020-08-10
5 oli 12 2020-08-10
6 velký hráč 7 2020-09-12

V databázi vytvoříme novou tabulku s názvem gamer která bude ukládat data ve všech sloupcích definovaných v tabulce championship (id , gamer , score a championship_date ).

Řešení 1:

CREATE TABLE gamer 
AS  
SELECT
  *
FROM championship;

Diskuse:

Pokud byste chtěli vytvořit novou tabulku, prvním krokem je použít CREATE TABLE klauzule a název nové tabulky (v našem příkladu:gamer ). Poté použijte AS klíčové slovo a zadejte SELECT příkaz, který vybírá data pro novou tabulku. V našem příkladu jsme vybrali všechny sloupce z tabulky championship pomocí hvězdičky (*). Sada výsledků zobrazuje všechny záznamy v tabulce championship .

Pokud však chcete vytvořit tabulku pouze s podmnožinou záznamů, můžete specifikovat vybraný dotaz jako v příkladu níže.

Řešení 2:

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

Zde je sada výsledků:

hráč skóre datum_championátu
alice 14 2020-08-10
happyman 0 2020-08-10
lukas 6 2020-08-10
oli 12 2020-08-10

SELECT dotaz načte pouze záznamy s championship_date datum stejné nebo starší než 2020-08-10 (WHERE championship_date <= 2020-08-10 ). V nové tabulce je uloženo méně sloupců než v předchozím příkladu (SELECT gamer, score, championship_date ) bez sloupce id .

Podobným řešením tohoto problému je použití SELECT INTO klauzule k vytvoření nové tabulky a zkopírování dat z jiné tabulky. Podívejte se na kód:

Řešení 3:

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

Výsledná tabulka je stejná. Všimněte si, že tato konstrukce není přítomna ve standardu SQL. V tomto SQL příkazu nejprve napíšeme SELECT , poté seznam sloupců a poté klíčové slovo INTO a nakonec název nové tabulky, kterou chceme vytvořit. Dále můžete přidat WHERE a další klauzule SQL jako GROUP BY nebo HAVING pro filtrování záznamů pro novou tabulku.


  1. VBA Alchymie:Přeměna metod na vlastnosti

  2. Dotaz MySQL, MAX() + GROUP BY

  3. MySQL:výběr řádků, kde je sloupec prázdný

  4. Jak exportovat data z SQL Server 2005 do MySQL