この記事を読むのに必要な時間は約 6 分です。
このページではSQL文を書く上で上級者向けのテクニックです。
と言っても慣れてしまえばたいしたことはありません。大事な事は
という、その事実に気づくところです。
こういうのは普通だれも教えてくれないですからね。
検索結果を使って一気にテーブル作成
Select文で検索した結果をそのままInsertする
テーブルを作成する場合、Create Table で作るのが一般的だと思います。しかし、ちょこちょこ細かくデータを挿入しなければならないときや、そのデータがSelect文で求められるときにこの方法が力を発揮します。
実は、初級編でサラッっとやっていますが今回は説明付きで実施してみたいと思います。
まずは何かSelectしてみる。
まずは、Selectしてみてください。何でも良いです。今回の例ではyubinテーブルを利用してみたいと思います。
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT TOP (1000) [全国地方公共団体コード]
,[旧郵便番号]
,[新郵便番号]
,[かな町域名]
,[かな都道府県名]
,[かな市区町村名]
,[漢字都道府県名]
,[漢字市区町村名]
,[漢字町域名]
,[data1]
,[data2]
,[data3]
,[data4]
,[data5]
,[data6]
FROM [test001].[dbo].[yubin]
これはそのまま上位1000行出してみただけですね。
ただぱっと見、不必要なデータが沢山あります。

そこで・・・
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT
[新郵便番号]
,[漢字都道府県名]
,[漢字市区町村名]
,[漢字町域名]
FROM [test001].[dbo].[yubin]
結果がこの様な状態になるテーブルを作ってみたいと思います。

Select文なのにInsertになる (into)
実は結構標準的な方法です。 Select 文の構文その物にこの【into】と言う物があります。これを利用する事によりSelectした結果をそのままテーブルに入れる事ができるのです。
書き方は以下の通りです。
select * into yubin2 from
(
--①-------------------------------------------
SELECT
[新郵便番号]
,[漢字都道府県名]
,[漢字市区町村名]
,[漢字町域名]
FROM [test001].[dbo].[yubin]
--②-------------------------------------------
)XXX
上記で①と②と書いている部分は無くても良いです。みやすくしているだけですので。
上記の①と②の間はただのSelect文です。何でも良いです。この部分に自分が作りたい元となるSQL文を貼り付けてもらえればそのままテーブルを作成する事ができます。
また、一番最後にXXXと書いているのは架空のテーブル名で何でも構いません。
実行結果は以下のようになります。

二か所ほど、赤枠で囲っていますがポイントとなる部分です。
- 既存のテーブルには入力できない。
- 作成した直後は左のペインに表示されない。
既存のテーブルがある状態でこのコマンドを実行するとエラーになります。

データベースに ‘yubin2’ という名前のオブジェクトが既に存在します。

drop table yubin2
select * into yubin2 from
(
–①——————————————-
SELECT
[新郵便番号]
,[漢字都道府県名]
,[漢字市区町村名]
,[漢字町域名]
FROM [test001].[dbo].[yubin]
–②——————————————-
)XXX
↑上記の赤文字で書いている部分ですね。
作成ができましたら、初級編でもやっている通り、
で、リフレッシュして下の赤い線を消しましょう。また、ペインに表示させたい場合はテーブルの右クリックメニューより 最新の情報に更新 を実行してください。
テーブルをselectした結果を利用してテーブルを作ることができるのでCreate文を書く手間を省くことができます。
便利です!


