【Oracle】merge into using

1. 场景

在写数据同步的脚本时,常常会遇到这样的需求:存在时 -> 更新,不存在时 -> 插入

2. merge into 语句

  • mergeOracle9i 新增的语法,根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入。
  • 比单独的 update + insert的方式效率要更高,尤其是 on 条件下有唯一索引的时候,效率更高。

语法

MERGE INTO 目标表 b
USING 源表 a
ON (b.字段1 = a.字段1 AND b.字段n = a.字段n) -- 必须带 ‘()’括号
WHEN MATCHED THEN -- 整体扫描,匹配时,执行此处
   UPDATE 子句
WHEN NOT MATCHED THEN -- 整体扫描,不匹配时,执行此处
   INSERT 子句;
示例
MERGE INTO stu_new b
USING stu_old a
ON (b.id = a.id)
WHEN MATCHED THEN
   UPDATE SET b.name = a.name, b.sex = a.sex WHERE a.name <> '张三'
WHEN NOT MATCHED THEN
   INSERT (b.id, b.name, b.sex) VALUES (a.id, a.name, a.sex) WHERE a.name = '张三';
作者: Hountry_Liu
本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00