SQL Serverで、SELECT結果でUPDATEする方法

投稿者: | 6月 1, 2014

SELECT結果を挿入したい場合は、次のような文法で書けます。

INSERT INTO <テーブル名> (<列名>,<列名>,<列名>)
SELECT
    <列名>,<列名>,<列名>
FROM
    <テーブル名> WHERE <条件>

わかりにくいので、具体的なコードを書くと次のような感じ。

INSERT INTO table (col1,col2)
SELECT col1,col2
FROM
    test
WHERE
    col1= 'test'

挿入じゃなくて、SELECT結果を用いて、更新したい場合は次のようにします。

UPDATE <テーブル名>
SET
    <テーブル名>.<列名> = <テーブル名>.<別のテーブル名>.<列名>
FROM
    <テーブル名>
INNNER JOIN
    <別のテーブル名>
ON
    <テーブル名>.id = <別のテーブル名>.id

わかりにくいので、具体的なコードを書くと次のような感じ。

UPDATE Table
SET
    Table.col1 = other_table.col1,
    Table.col2 = other_table.col2
FROM
    Table
INNER JOIN
    other_table
ON
    Table.id = other_table.id

MSDNでは、「他のテーブルのデータに基づいてデータを更新する」で説明されています。

SQL Serverで、SELECT結果でUPDATEする方法」への3件のフィードバック

  1. とおりすがり

    具体的なコードの上の INNER JOINのNが多いですよ。

    返信
  2. とおりすがり2

    × . = ..

    〇 . = .

    サンプルコードがあるから別段問題ないと思われますが。

    返信

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください