merge into语句用法
原文地址:https://zhuanlan.zhihu.com/p/47884584
使用merge语句从一个或多个源中选择行以进行更新或插入表或视图。可以指定条件以确定是update还是insert目标表或视图。
merge语句是组合多个操作的便捷方式。它可以让你避免多次使用INSERT,UPDATE和DELETE语句去操作数据。
语法:
merge [hint]
into[schema.] {table |view} [ t_alias ]
using {[schema.] {table|view }|subquery } [t_alias ]
on ( condition )
when matched then [merge_update_clause]
when not matched then [merge_insert_clause ];
参考源:MERGE
描述:
merge into baseTable bt
using (select * from tempTable) temp
on (bt.code = temp.code)
when matched then inset/update/delete语句
when not matched then inset/update语句;
1. 用一个表(tempTable)按条件去操作另一个表(baseTable)的数据,如果on 条件为true 则表示条件匹配 执行when matched then后的语句,否则执行when not matched then;
2. when matched then和when not matched then 可选,我们可以至使用其中一个;
3. update 或insert语句 不用再写表名;
例:
when matched then
update set bt.name = temp.name where ....
when not matched then
insert ( , , , ) values ( , , , )
--表名省略不写
3. delete语句只能写在matched(匹配)情况中,不匹配时无法删除将抛出错误;
4. using后可以是一张表,也可以是子查询组成的临时表;
5.merge是一个确定性的陈述,无法在同一MERGE语句中多次更新目标表的同一行。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性