sql >> データベース >  >> RDS >> Database

SQLクエリからテーブルを作成する方法

    問題:

    SQLクエリで定義されたデータを使用してデータベースに新しいテーブルを作成します。

    例:

    テーブルgamer SQLクエリに基づいています。このクエリでは、championship 以下に示します。

    ゲーマー スコア アリス スーパーバイザー ハッピーマン ルーカス ビッグゲーマー
    id Championship_date
    1 14 2020-08-10
    2 10 2020-09-28
    3 0 2020-08-10
    4 6 2020-08-10
    5 oli 12 2020-08-10
    6 7 2020-09-12

    データベースに、gamer これは、テーブルchampionshipidgamerscore 、およびchampionship_date )。

    ソリューション1:

    CREATE TABLE gamer 
    AS  
    SELECT
      *
    FROM championship;
    

    ディスカッション:

    新しいテーブルを作成する場合、最初のステップはCREATE TABLEを使用することです。 句と新しいテーブルの名前(この例では、gamer )。次に、ASを使用します キーワードを入力し、SELECTを指定します 新しいテーブルのデータを選択するステートメント。この例では、テーブルchampionship アスタリスク(*)を使用します。結果セットには、テーブルchampionship

    ただし、レコードのサブセットのみを含むテーブルを作成する場合は、次の例のように、選択したクエリを指定できます。

    ソリューション2:

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

    結果セットは次のとおりです。

    ゲーマー スコア
    Championship_date
    alice 14 2020-08-10
    ハッピーマン 0 2020-08-10
    lukas 6 2020-08-10
    oli 12 2020-08-10

    SELECT クエリは、championship_dateのレコードのみを取得します 2020-08-10以上の日付(WHERE championship_date <= 2020-08-10 )。新しいテーブルには、前の例よりも少ない列が格納されます(SELECT gamer, score, championship_date )列idなし 。

    この問題に対する同様の解決策は、SELECT INTOを使用することです。 新しいテーブルを作成し、別のテーブルからデータをコピーする句。コードを見てください:

    ソリューション3:

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

    結果のテーブルは同じです。この構造はSQL標準には存在しないことに注意してください。このSQLコマンドでは、最初にSELECTと記述します。 、次に列のリスト、次にキーワードINTO 、最後に、作成する新しいテーブルの名前。次に、WHEREを追加できます およびGROUP BYなどの他のSQL句 またはHAVING 新しいテーブルのレコードをフィルタリングします。


    1. 一連の番号から欠落している番号を確認するにはどうすればよいですか?

    2. PostgreSQL一時テーブル

    3. byte[]の適切なHibernateアノテーション

    4. クエリ中にMySQLサーバーへの接続が失われました