[SQL Server] 【SQLSERVER2008】新しいINSERTする方法

inno
2013-10-11 12:29 2939 0
【SQLSERVER2008】新しいINSERTする方法

SQL SERVER 2008から新しく追加されたINSERTする方法です。
まずテストのためにテーブルを作成しましょう。

USE [tempdb]
GO

CREATE TABLE dbo.TempTable
(
Data1 varchar(10)
,Data2 varchar(10)
,Data3 varchar(10)
)
GO

今までのデータをINSERTする方法としては下記のようなSQLでした。

INSERT INTO dbo.TempTable (Data1, Data2, Data3)
VALUES ('A', 'B', 'C')

データを2件登録する場合は下記のように1件ずつINSERTをしました。

INSERT INTO dbo.TempTable (Data1, Data2, Data3)
VALUES ('A', 'B', 'C')

INSERT INTO dbo.TempTable (Data1, Data2, Data3)
VALUES ('B', 'C', 'D')


では、SQL SERVER 2008から新しく追加されたINSERTする方法を紹介します。

INSERT INTO dbo.TempTable (Data1, Data2, Data3)
VALUES 
('C', 'D', 'E')
,('D', 'E', 'F')
,('E', 'F', 'G')

上記のように一つのINSERT文に1個以上のデータを登録する時使えます。

SQL SERVER 2005からもできますが、
下記のようなINSERTする方法もありますので、ご参考ください。

INSERT INTO dbo.TempTable (Data1, Data2, Data3)
SELECT 'C', 'D', 'E' UNION ALL
SELECT 'D', 'E', 'F' UNION ALL
SELECT 'E', 'F', 'G'

私の場合は、一番最後のSELECT文を使ってINSERTする方法を愛用しています。

コメント