INSERT と SELECT サブクエリを使用した行の挿入
INSERT ステートメントの中で SELECT サブクエリを使用すると、テーブルに 1 つ以上の他のテーブルまたはビューの値を追加できます。また、SELECT サブクエリを使用すると、複数の行を同時に挿入することもできます。
次の例では、INSERT
ステートメントを使用して、AdventureWorks
の Sales.SalesReason
テーブル内のすべての行からデータの一部を別のテーブルに挿入します。SalesReason
が Marketing
であるデータが挿入されます。
USE AdventureWorks;
GO
CREATE TABLE MySalesReason (
SalesReasonID int NOT NULL,
Name nvarchar(50),
ModifiedDate datetime);
GO
INSERT INTO MySalesReason
SELECT SalesReasonID, Name, ModifiedDate
FROM AdventureWorks.Sales.SalesReason
WHERE ReasonType = N'Marketing';
GO
SELECT SalesReasonID, Name, ModifiedDate
FROM MySalesReason;
GO
サブクエリの選択リストは、INSERT ステートメントの列リストに一致している必要があります。列リストを指定しない場合は、選択リストは、追加されるテーブルまたはビュー内の列に一致している必要があります。
INSERT...SELECT ステートメントの別の用途は、SQL Server 2005 の外部のソースからデータを挿入することです。次の場合には、INSERT ステートメントの中で SELECT を使用できます。
- 4 つの要素で構成される名前を使用して、リンク サーバー上のリモート テーブルを参照する。詳細については、「リンク サーバー名の使用によるデータ ソースの識別」を参照してください。
- OPENROWSET を使用してリモート テーブルを参照する。詳細については、「アドホック名を使用したデータ ソースの識別」を参照してください。
- リモート サーバー上で実行されるクエリの結果セットを使用する。詳細については、「パススルー クエリのテーブルとしての使用」を参照してください。
参照
概念
INSERT と SELECT を使用した行の追加
INSERT と VALUES の使用による行の挿入
TOP の使用による挿入行数の制限
SELECT INTO を使用した行の挿入