目次

他のデータベースのテーブルのselectの結果でUpdateする - SQL Server

他のデータベースのテーブルの内容を用いてアップデートする場合には from句を使用します。
また、同じ名前の表からのアップデートでは名前が同じになるためasを使用し、別の名前を定義する必要もあります。

例1

下記の例は、データベース「iD」のContentデーブルのID番号146のレコードのcategory, title, docを、データベース「iD2」のContentテーブルのID番号146のレコード内容で更新する例です。
use iD
use iD2

update [iD].[dbo].Contents 
set
category=A.category, 
title=A.title, 
doc=A.doc 
from [iD2].[dbo].Contents as A
where [iD].[dbo].Contents.id = 146 and A.id=146

実行前

iD テーブル
idcategorytitledoc
145旅行フランス旅行フランス旅行の見どころ
146生活ごみの捨て方ごみは毎週水曜日
147健康運動のしかた軽いウォーキングで
148旅行チリ旅行チリで食べておくべきもの
iD2 テーブル
idcategoryprtitleicedoc
145旅行フランス旅行フランス旅行で食べたいもの
146旅行スーツケースの選び方丈夫なスーツケールを選ぶポイント
147健康運動のしかた軽いウォーキングで
148旅行チリ旅行チリの世界遺産

実行後

id=146のレコードが iD2テーブルの内容で更新されます。
iD テーブル
idcategorytitledoc
145旅行フランス旅行フランス旅行の見どころ
146旅行スーツケースの選び方丈夫なスーツケールを選ぶポイント
147健康運動のしかた軽いウォーキングで
148旅行チリ旅行チリで食べておくべきもの
iD2 テーブル
idcategoryprtitleicedoc
145旅行フランス旅行フランス旅行で食べたいもの
146旅行スーツケースの選び方丈夫なスーツケールを選ぶポイント
147健康運動のしかた軽いウォーキングで
148旅行チリ旅行チリの世界遺産

例2

データベース「iD」のContents テーブルのすべてのレコードを、データベース「iD2」のContentテーブルの同じidのレコードで更新する例です。
use iD
use iD2

update [iD].[dbo].Contents
set
document=A.Document
from [iD2].[dbo].Contents as A
where [iD].[dbo].Contents.id = A.id

実行前

iD テーブル
idnamedocument
145Penguinあいうえお
146Duckかきくけこ
147Whaleさしすせそ
148Bearたちつてと
iD2 テーブル
idnamedocument
1PenguinABCD
2DuckEFGH
3WhaleIJKL
4BearMNOP

実行後

iDテーブルのすべてのレコードのdocumentの値がiD2テーブルの内容で更新されます。
iD テーブル
idnamedocument
145PenguinABCD
146DuckEFGH
147WhaleIJKL
148BearMNOP
iD2 テーブル
idnamedocument
145Penguin2ABCD
146Duck2EFGH
147Whale2IJKL
148Bear2MNOP
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
掲載日: 2009-08-03
iPentec all rights reserverd.