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

SQLServerの別のテーブルに基づいて一時テーブルを作成する

    SQL Serverでは、SELECT... INTOを使用して、別のテーブルに基づいて一時テーブルを作成できます。 構文。

    データの有無にかかわらずテーブルを作成できます。つまり、必要に応じて元のテーブルからデータをコピーすることも、データなしでテーブルを作成することもできます。

    例1-データを使用してテーブルを作成する

    永続テーブルに基づいて一時テーブルを作成し、プロセス内のすべてのデータをコピーする例を次に示します。

    USE Test;
    SELECT 
      CatId,
      CatName,
      Phone
    INTO #TempCatsAllData
    FROM dbo.Cats;
    

    結果を見てみましょう。

    SELECT * FROM #TempCatsAllData;
    

    結果:

    +---------+-----------+------------+
    | CatId   | CatName   | Phone      |
    |---------+-----------+------------|
    | 1       | Garfield  | 9871237654 |
    | 2       | Felix     | 8871237651 |
    | 3       | Tom       | 7871237652 |
    | 4       | Fetch     | 6871237653 |
    +---------+-----------+------------+
    

    WHEREを使用してデータをフィルタリングすることもできます 必要に応じて条項。

    例2–データなしでテーブルを作成する

    データなしでテーブルを作成する例を次に示します。

    USE Test;
    SELECT 
      CatId,
      CatName,
      Phone
    INTO #TempCatsNoData
    FROM dbo.Cats
    WHERE 1 = 0;
    

    この例では、WHERE 1 = 0を使用します データを返しません。

    例3–テーブルを確認する

    この例では、2つの一時テーブルを元のテーブルと比較します。これを行うには、sys.columnsにクエリを実行します 元のデータベース(元のテーブル用)および tempdbのカタログビュー データベース(一時テーブル用)。

    USE Test;
    SELECT
      name AS [Column Name],
      TYPE_NAME(user_type_id) AS [Data Type],
      max_length,
      [precision],
      scale,
      is_nullable
    FROM sys.columns
    WHERE OBJECT_NAME(object_id) = 'Cats';
    
    USE tempdb;
    SELECT
      name AS [Column Name],
      TYPE_NAME(user_type_id) AS [Data Type],
      max_length,
      [precision],
      scale,
      is_nullable
    FROM sys.columns
    WHERE OBJECT_NAME(object_id) LIKE '#TempCatsAllData%';
    
    SELECT
      name AS [Column Name],
      TYPE_NAME(user_type_id) AS [Data Type],
      max_length,
      [precision],
      scale,
      is_nullable
    FROM sys.columns
    WHERE OBJECT_NAME(object_id) LIKE '#TempCatsNoData%';
    

    結果:

    Changed database context to 'Test'.
    +---------------+-------------+--------------+-------------+---------+---------------+
    | Column Name   | Data Type   | max_length   | precision   | scale   | is_nullable   |
    |---------------+-------------+--------------+-------------+---------+---------------|
    | CatId         | int         | 4            | 10          | 0       | 0             |
    | CatName       | varchar     | 70           | 0           | 0       | 1             |
    | Phone         | varchar     | 10           | 0           | 0       | 1             |
    +---------------+-------------+--------------+-------------+---------+---------------+
    (3 rows affected)
    Changed database context to 'tempdb'.
    +---------------+-------------+--------------+-------------+---------+---------------+
    | Column Name   | Data Type   | max_length   | precision   | scale   | is_nullable   |
    |---------------+-------------+--------------+-------------+---------+---------------|
    | CatId         | int         | 4            | 10          | 0       | 0             |
    | CatName       | varchar     | 70           | 0           | 0       | 1             |
    | Phone         | varchar     | 10           | 0           | 0       | 1             |
    +---------------+-------------+--------------+-------------+---------+---------------+
    (3 rows affected)
    +---------------+-------------+--------------+-------------+---------+---------------+
    | Column Name   | Data Type   | max_length   | precision   | scale   | is_nullable   |
    |---------------+-------------+--------------+-------------+---------+---------------|
    | CatId         | int         | 4            | 10          | 0       | 0             |
    | CatName       | varchar     | 70           | 0           | 0       | 1             |
    | Phone         | varchar     | 10           | 0           | 0       | 1             |
    +---------------+-------------+--------------+-------------+---------+---------------+
    (3 rows affected)
    

    1. MySQLデータベースから画像を取得してhtmlタグで表示する方法

    2. UTC_DATEの例– MySQL

    3. システム統計関数を使用してSQLServer統計情報を取得する方法

    4. WebサイトのダウンとTwitterフィード