Loading...
Toggle navigation
一分夕阳
首页
必应壁纸
每日英语
个人博客
关于网站
小轩窗,正梳妆,相顾无言,唯有泪千行
SQL
Oracle中使用Merge Into去除数据库重复记录
尚荣伊翁 | 2019-08-05 16:20:38.0 | 721人围观 | 标签:Oracle
Oracle中的Merge Into在数据库可以替代update/insert使用,同时具有二者功能,在数据库中没有对应记录时,插入记录;数据库中有对应记录时,更新记录。 **语法:** ```sql MERGE INTO table_name alias1 USING (table|view|sub_query) alias2 ON (join condition) WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1, col2 = col_val2 WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values); ``` **应用:** 1、当数据库中已经存在数据时,**覆盖**数据库中记录,即完全拿最新的数据替换数据库中已有数据。 ```sql MERGE INTO D_MESSAGE_FLOOD T1 USING (select '14' id from dual) T2 ON ( T1.id=T2.id) WHEN MATCHED THEN UPDATE set T1.dr_2='dr_2',T1.dd='dd' WHEN NOT MATCHED THEN INSERT (id) VALUES('14'); ``` 2、当数据库中已存在数据时,向数据库中**追加**记录,即只更新此条记录中为空的字段,不为空的字段保留 ```sql MERGE INTO D_MESSAGE_FLOOD T1 USING (select '14' id from dual) T2 ON ( T1.id=T2.id) WHEN MATCHED THEN UPDATE SET T1.dr_2 = (case when T1.dr_2 is null or T1.dr_2='' then 'dr_2' else T1.dr_2 end), T1.dd = (case when T1.dd is null or T1.dd='' then 'dd ' else T1.dd end) WHEN NOT MATCHED THEN INSERT (id) VALUES('14'); ``` 3、当数据库中已存在数据时,**丢弃**最新记录,保留数据库中原有记录。这个比较简单,当判断条件成立时,不做处理就行了 ```sql MERGE INTO D_MESSAGE_FLOOD T1 USING (select '14' id from dual) T2 ON ( T1.id=T2.id) WHEN NOT MATCHED THEN INSERT (id) VALUES('14'); ```
Add your comment
Name
Name
Post comment
博客分类
HTML - 2
Java - 5
Linux - 1
SQL - 2
阅读排行
Java 将日期或秒数转换为日时分秒
10910人围观
Oracle中使用Merge Into去除数据库重复记录
721人围观
JS获取table列数据
12人围观
IE浏览器版本检测并提示升级,IE6,IE7,IE8,IE9,IE10
9人围观
Java获取两个时间段内的所有日期
5人围观
博客标签
tomcat
java
Oracle
javascript
jQuery
informix
GBase
json
最新评论
Maria on
Designer Desk Essentials
John on
Realistic Business Card Mockup
Andy on
Eco bag Mockup
Jack on
Bottle Mockup
Mark on
Our trip to the Alps
网站声明
本站所有内容均来自互联网,如果涉及到侵权行为,请及时联系,我们会在第一时间改正
本站为非盈利性网站,只做分享,暂不涉及广告
备案号:
京ICP备17066418号
站长信息
职 业: Java程序猿
现 居: 北京丰台区
生 日: 1991年12月
Email: namewulei@163.com
打赏小站
如果您觉得小站还不错,可以打赏一下哈
联系站长
我的微信
Add your comment