MySQL Merge into是一種非常實用的SQL語句,能夠允許我們將一個表的數據合并到另一個表中,同時還能夠在進行合并時進行一些額外的處理,例如更新或刪除。
MERGE INTO<目標表>USING<源表>ON (<條件>) WHEN MATCHED THEN UPDATE SET<目標字段>=<源字段>WHEN NOT MATCHED THEN INSERT (<目標字段>) VALUES (<源字段>)
這是一個基本的merge into語句,<目標表>表示我們要合并到的目標表,<源表>表示我們要從中獲取數據來合并的表,<條件>表示我們用來匹配兩個表的字段。如果ON語句成立(即兩個表的字段匹配),則進行更新;如果不成立,則進行插入。
除了基本語法之外,MySQL Merge into還存在許多可選項。
MERGE INTO<目標表>USING<源表>ON (<條件>) WHEN MATCHED THEN UPDATE SET<目標字段>=<源字段>WHEN NOT MATCHED THEN INSERT (<目標字段>) VALUES (<源字段>) DELETE WHERE<刪除條件>
以上語句中的DELETE WHERE表示在進行合并操作時,如果遇到一些需要刪除的數據,我們可以提供相應的刪除條件來實現。
而且我們還可以在Merge into語句中通過輸出查詢結果的方式來確定我們是否成功合并了表中的數據。只需要在語句尾部加上OUTPUT語句即可。
MERGE INTO<目標表>USING<源表>ON (<條件>) WHEN MATCHED THEN UPDATE SET<目標字段>=<源字段>WHEN NOT MATCHED THEN INSERT (<目標字段>) VALUES (<源字段>) DELETE WHERE<刪除條件>OUTPUT $action, inserted.*, deleted.*;
最后不得不說的是,在進行Merge into操作前,請一定要注意備份數據,因為這種“合并”操作很容易破壞原有表中的數據。尤其是在使用刪除操作時,更要慎重對待。
下一篇bak轉mysql