MERGE INTO,SQL語法,工作筆記

When I met you in the summer 

To my heartbeat's sound

(音樂-summer)

剛開始接觸到 MERGE INTO,腦中就浮現了一首歌... summer~ met you(merge)

哈哈哈!讀音 超像的~

前情提要

這次在算一個月的統計使用次數,每天會觸發排程。

設計思維

這次我採用的是inset & update, 如果 今日這筆資料有存在就更新否則新增,以StatisticsDate、更新日期、ID、faulttype 作為主鍵,判斷是否存在過今日計算。 (圖1)

會這麼做是因為避免統計結果,在不小心觸發2次造成當日結果在insert 。

統計表 tblStatistics_Gateways (圖1)

使用方法

在mysql 中 可以用 insert update on duplicate key ,會根據唯一值去更新欄位  UNIQUE index or PRIMARY KEY 。

在mssql 中 可以用 Using MERGE (圖2)

mssql 使用merge 更新(圖2)


  • MERGE INTO

使用 MERGE 語句將 tblStatistics_Gateways 作為目標表。

  • WHEN MATCHED THEN

如果存在紀錄,則更新 Faults

  • WHEN NOT MATCHED THEN

如果沒有紀錄,則執行插入操作。

 心得

其實有點像IF..ELSE的變化版,與mysql 的on duplicate 差異是 不需要再多設定unique key,是透過 on  A=B, 蘋果 = 橘子 的方式 去判別組別是否存在。

留言