SQL MERGE VALUE

PC

SQLでテーブルにデータをMergeしたいとき、2,3行のデータで別にテーブルを用意するまでもないものだった場合、どうすべきでしょうか。

わざわざMergeにするのは、Insertだとデータのダブりを避けたいからですが、Merge文は基本的にテーブル同士のデータ結合をさせるものという作りなので、こういう場合にはそぐわないよなー、と思っていましたが、擬似的にテーブルっぽくしてMergeさせてしまうやり方を見つけました。

最初に考えたInsertをするやつというのは例えばこんな感じですね。

INSERT INTO T_Target
([ID]
,[Title]
,[Category]) 
VALUES
(@ID
,@Title
,@Category)
;

これは、ID、Title、Categoryというカラムを持つT_Targetテーブルに、@ID、@Title、@Categoryというデータのセットを挿入するというものです。
@が付いているのでわかりづらければ、「5、タイトルあああ、カテゴリーいいい」とでもしておきましょうか。
で、これだとこのデータのセットがすでにテーブルT_Targetにあったら、重複してしまうわけですね。
これを避けたいのでMerge文を使います。

MERGE INTO T_Target AS T
USING
(SELECT
 @ID AS [ID]
,@Title AS [Title]
,@Category AS [Category]
) AS S
  ON T.ID = S.ID
AND T.Title = S.Title
AND T.Category = S.Category
WHEN NOT MATCHED THEN
INSERT
([ID]
,[Title]
,[Category]
)
VALUES
([ID]
,[Title]
,[Category]
);

データのセットをSとしてT_Targetにぶつける疑似テーブルにしているのが面白いですね。
別にTmpテーブルを作るまでもない、ということで。
データのセットが数個のときは、これくらいの対応で良いのかな、と思います。
それ以上になるとTmpテーブルに一旦格納してからMergeさせたほうが早い気がしますが。

SQL本

スッキリわかるSQL入門 第3版 ドリル256問付き! (スッキリわかる入門シリーズ) [ 中山 清喬 ]
スッキリわかるSQL入門 第3版 ドリル256問付き! (スッキリわかる入門シリーズ) [ 中山 清喬 ] 3,080円(税込)【送料込】

楽天ブックス

スッキリわかる入門シリーズ 中山 清喬 飯田 理恵子 インプレススッキリワカルエスキューエルニュウモンダイサンパンドリルニヒャクゴジュウロクモンツキ ナカヤマ キヨタカ イイダ リエコ 発行年月:20

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS) [ ミック ]
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS) [ ミック ] 2,750円(税込)【送料込】

楽天ブックス

CodeZine BOOKS ミック 翔泳社タツジンニマナブエスキューエルテッテイシナンショ ダイニハン ショキュウシャデオワリタクナイアナタヘ ミック 発行年月:2018年10月11日 予約締切日:

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus) [ ミック ]
SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus) [ ミック ] 2,838円(税込)【送料込】

楽天ブックス

WEB+DB PRESS plus ミック 技術評論社SQLジッセンニュウモン──コウソクデワカリヤスイクエリノカキカタ ミック 発行年月:2015年04月 予約締切日:2015年04月10日 ページ

SQLポケットリファレンス改訂第4版 (Pocket reference) [ 朝井淳 ]
SQLポケットリファレンス改訂第4版 (Pocket reference) [ 朝井淳 ] 2,178円(税込)【送料込】

楽天ブックス

Pocket reference 朝井淳 技術評論社エスキューエル ポケット リファレンス アサイ,アツシ 発行年月:2017年02月 ページ数:656p サイズ:単行本 ISBN:978477418

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ) [ ミック ]
SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ) [ ミック ] 2,068円(税込)【送料込】

楽天ブックス

プログラミング学習シリーズ ミック 翔泳社エスキューエルダイニハン ゼロカラハジメルデータベースソウサ ミック 発行年月:2016年06月16日 ページ数:336p サイズ:単行本 ISBN:9784

楽天ウェブサービスセンター
タイトルとURLをコピーしました