博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle:MERGE语句
阅读量:6793 次
发布时间:2019-06-26

本文共 782 字,大约阅读时间需要 2 分钟。

将源表添加到目标表,如果目标表中行已经存在,可以更新数据,如果不存在,可以插入数据。

之所以说可以,因为更新、插入操作都是要自己写的。 - -!

9i 时必须update insert 都有,10g以后至少有一个

MERGE INTO target_table_name tar_tUSING source_table_name sou_t ON(expr1)WHEN MATCHED THENexpr2WHEN NOT MATCHED THENexpr3;

(这只是一条sql 语句 - -!)

expr1 为判断语句,例如 tar_t.id = sou_t.id

expr2 为目标行存在的操作, 例如 UPDATE SET xxxx [WHERE xxx]  [DELETE WHERE (xxx)]

expr3 为不存在时的操作,例如INSERT VALUES (xxxx) [WHERE xxx] 

 

WHEN 语句只写一个,那么另外的那个将被忽略

expr1时可以对UPDATE加WHERE 操作,控制部分更新

UPDATESET expr1WHERE xxx

where 操作只能在满足 ON 条件的数据下再一次选择

DELETE 语句只能删除 目标表的行,就算是特意指明是源表,也会删除目标表

而且DELETE语句一定在 WHERE 后面(如果存在),就是上面expr2 的格式

需要注意的是在UPDATE时出现多组源表数据对应目标表中的一行数据(这种情况可以通过primary key 解决)

如果expr1 中有空值做判断,不会跳入 MATCHED 和 NOT MATCHED

MERGE 可以做很多UPDATE 的操作

转载于:https://www.cnblogs.com/Azhu/archive/2012/04/10/2439861.html

你可能感兴趣的文章
苹果是否有能力再造一个企业级App Store?
查看>>
怎样选择合适的云服务器
查看>>
亚欧14国ATM机被攻击自动吐钱,或与东欧黑客团体有关
查看>>
Linux服务器网络连接有问题?Ping工具来帮忙
查看>>
Facebook新功能:自动识别哪些李鬼账号假冒您
查看>>
研发人员开发出一套硬件级别的后门技术
查看>>
电力“十三五” 光伏分布式6000万千瓦迎来机遇
查看>>
高桥洋接任索尼中国总裁:索尼营销第一人
查看>>
知乎iOS客户端下午瘫了 原来是第三方防火墙变更害的
查看>>
监控工程中,如何选择光纤的种类和芯数
查看>>
“小病进社区,大病进医院”难吗?
查看>>
20种 IT 职业明年将大幅涨薪,无线网络工程师最高
查看>>
《C语言编程——零基础初学者指南(第3版)》一第2章 编写第一个C程序2.1 概述...
查看>>
《HTML5+CSS3网页设计入门必读》——1.3 理解Web内容递送
查看>>
oracle table-lock的5种模式
查看>>
《 线性代数及其应用 (原书第4版)》——2.8 R^n的子空间
查看>>
初创公司如何快速低耗实现数据化运营
查看>>
《循序渐进学Docker》——导读
查看>>
《树莓派开发实战(第2版)》——1.8 使用复合视频显示器/TV
查看>>
编码之道:取个好名字很重要
查看>>