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入門第2版 ドリル222問付き! [ フレアリンク ]
スッキリわかるSQL入門第2版 ドリル222問付き! [ フレアリンク ] 3,080円(税込)【送料込】

楽天ブックス

ドリル222問付き! フレアリンク 中山清喬 インプレススッキリ ワカル エスキューエル ニュウモン フレアリンク ナカヤマ,キヨタカ 発行年月:2018年12月 予約締切日:2018年11月07日

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

楽天ブックス

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

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日 ページ数:319p

いちばんやさしい SQL 入門教室 [ 矢沢久雄 ]
いちばんやさしい SQL 入門教室 [ 矢沢久雄 ] 2,178円(税込)【送料込】

楽天ブックス

矢沢久雄 ソーテック社イチバンヤサシイ エスキューエル ニュウモンキョウシツ ヤザワヒサオ 発行年月:2019年05月22日 予約締切日:2019年04月22日 ページ数:240p サイズ:単行本 I

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