MERGE INTO,SQL語法,工作筆記
When I met you in the summer
To my heartbeat's sound
剛開始接觸到 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, 蘋果 = 橘子 的方式 去判別組別是否存在。
留言
張貼留言