1. ホーム
  2. sql-server

[解決済み] T-SQLでテーブル変数をSELECT INTOする

2022-03-22 02:16:46

質問

複雑なSELECTクエリを作成し、そこからテーブル変数にすべての行を挿入したいのですが、T-SQLはそれを許可していません。

<ブロッククオート

同じように、SELECT INTOやINSERT EXECクエリでテーブル変数を使用することはできません。 http://odetocode.com/Articles/365.aspx

短い例です。

declare @userData TABLE(
                        name varchar(30) NOT NULL,
                        oldlocation varchar(30) NOT NULL
                       )

SELECT name, location
INTO @userData
FROM myTable
    INNER JOIN otherTable ON ...
WHERE age > 30

テーブル変数のデータは、後で別のテーブルに挿入/更新するために使用されます(ほとんどは、マイナーな更新を伴う同じデータのコピーです)。この目的は、スクリプトをもう少し読みやすくすること、そして SELECT INTO を直接正しいテーブルに挿入してください。 パフォーマンスは問題ではありません。 rowcount はかなり小さく、必要なときだけ手動で実行されます。
...あるいは、私が間違っているのなら教えてください。

解決方法は?

こんな感じで試してみてください。

DECLARE @userData TABLE(
    name varchar(30) NOT NULL,
    oldlocation varchar(30) NOT NULL
);

INSERT INTO @userData (name, oldlocation)
SELECT name, location FROM myTable
INNER JOIN otherTable ON ...
WHERE age > 30;