みなさんは既存のテーブルのレコードで、あるカラムを変更して、新しいテーブルに追加したいということはありますでしょうか?
例えば。。。
Testテーブル「()は、データ型 」
Year (INT) | TestName (VARCHAR(30)) | SchoolYear(INT) | PassingScore(INT) |
2020 | 現代文 | 1 | 60 |
2020 | 数学A | 2 | 60 |
2020 | 日本史B | 3 | 80 |
2021 | 化学基礎 | 1 | 65 |
2022 | 化学 | 2 | 70 |
2022 | 古文 | 2 | 60 |
このようなテーブルがあったとして、以下のように2020年のレコードを取り出して、新しいテーブルとして保存したい。
NewTestテーブル
Year (INT) | TestName (VARCHAR(30)) | SchoolYear(INT) | PassingScore(INT) |
2020 | 現代文 | 1 | 60 |
2020 | 数学A | 2 | 60 |
2020 | 日本史B | 3 | 80 |
そのとき、1からINSERT INTO ステートメントを実行するのは、面倒です。
今回はそのような時、どうすればよいか紹介します。
本記事では、SQLServerを対象としています。他のRDBでは異なる可能性があります。
SELECT INTOステートメント
SELECT INTOステートメントを使って、既存のテーブルから取得したいレコードを抽出し、新しいテーブルに保存できます。
SELECT
*
INTO NewTest
FROM Test
WHERE Year = 2020;
SELECT
のあとに取得したいカラム。今回はすべて選択しています。
カラムを指定すれば、指定したカラムで新しいテーブルも作成できます。
INTO
のあとに新しいテーブル名。
FROM
のあとに既存のテーブル名。
WHERE Year = 2020
で既存のテーブルから2020年のものを抽出しています。
これで、2020年度のレコードが入ったNewTestテーブルが作成されました。