merge into语法
时间: 2023-08-28 17:11:50 浏览: 54
Merge into语法如下所示:
MERGE INTO \[目标表\] T USING \[源表查询语句\] S ON(\[条件表达式\] and \[...\]...)
WHEN MATCHED THEN \[更新语句\]
WHEN NOT MATCHED THEN \[插入语句\]
Merge into是Oracle语法,用于判断目标表中是否存在符合条件的数据,如果存在则执行更新操作,如果不存在则执行插入操作。注意,条件表达式需要用括号包围。\[1\]\[2\]
使用场景一般是增量插入数据,如果是源表全量数据插入目标表,通常认为使用insert into语句效率更高。但是当数据源表的数据需要查询大量关联表后才能录入目标表时,使用merge into语句可以提高插入数据的效率。在merge into语句中,可以使用匹配条件on(0=1)来实现插入数据的高效率。\[3\]
具体使用方法如下:
MERGE INTO 目标表 t1 USING 源表 t2 ON(t1.id = t2.id)
WHEN MATCHED THEN UPDATE SET t1.name = t2.name
WHEN NOT MATCHED THEN INSERT(id, name) VALUES(t2.id, t2.name)
这个语句的作用是,如果目标表和源表中的id匹配,则更新目标表的name字段为源表的name字段;如果目标表中不存在与源表匹配的id,则插入一条新的记录,插入的id和name字段值分别为源表的id和name字段值。
#### 引用[.reference_title]
- *1* [merge into 的用法](https://blog.csdn.net/weixin_44657888/article/details/124591434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Merge into用法](https://blog.csdn.net/qq_57756904/article/details/121462163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Merge into的用法](https://blog.csdn.net/weixin_44424690/article/details/128327096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]