Oracle 中用一个表的数据更新另一个表的数据
来源:互联网 发布:dw软件怎么用 编辑:程序博客网 时间:2024/06/05 08:18
有下面两个表:将表tab1中id值与和表tab2中id值相同的行的val更新为tab2中val的值.
select * from tab1;
更新完后的结果是:select * from tab1,在tab1中有的行,如果在tab2中没有对应的行,值被更新为null改正为:update tab1 set val=(select val from tab2 where tab1.id=tab2.id)
where exists (select 1 from tab2 where tab1.id=tab2.id)
但是如果tab2中有多条对应tab1中一条的情况也会出错.
最好的方法是用merge语法:
比如在tab2中再插入一条 insert into tab2 values(2,'xxxx')
可以通过在using中的subquery中将重复记录过滤来避免这种错误,merge终极版:
select * from tab1;
select * from tab2
更新完后的结果是:select * from tab1,在tab1中有的行,如果在tab2中没有对应的行,值被更新为null改正为:update tab1 set val=(select val from tab2 where tab1.id=tab2.id)
where exists (select 1 from tab2 where tab1.id=tab2.id)
但是如果tab2中有多条对应tab1中一条的情况也会出错.
最好的方法是用merge语法:
merge into tab1using tab2on(tab1.id=tab2.id)when matched thenupdate set tab1.val = tab2.val同样,如果tab2中有多条对应tab1中一条的情况也会出错:ORA-30926: unable to get a stable set of rows in the source tables
比如在tab2中再插入一条 insert into tab2 values(2,'xxxx')
可以通过在using中的subquery中将重复记录过滤来避免这种错误,merge终极版:
merge into tab1using (select * FROM tab2 X WHERE X.ROWID =(SELECT MAX(Y.ROWID) FROM tab2 Y WHERE X.ID = Y.ID)) tab2on(tab1.id=tab2.id)when matched thenupdate set tab1.val = tab2.val
- Oracle 中用一个表的数据更新另一个表的数据
- Oracle中用一个表的数据更新另一个表的数据
- Oracle中用一个表的数据更新另一个表的数据
- Oracle 中用一个表的数据更新另一个表的数据
- Oracle中用一个表的数据更新另一个表的数据
- Oracle中用一个表的数据更新另一个表的数据
- Oracle 中用一个表的数据更新另一个表的数据
- Oracle中用一个表更新另一个表
- Oracle中用一个表更新另一个表
- SQL一个表的数据更新到另一个表
- 用一个表的数据更新另一个表Sql Server
- MySQL里用一个表的数据更新另一个表
- 如何在一个update语句中,用一个表的数据更新另一个表的数据
- Oracle将一个表的数据插入另一个表
- Oracle查询一个表的数据插入到另一个表
- SQL Server一个表添加数据,引发另一个表更新数据 的一个简单触发器例子
- oracle中用一张表的数据更新另一张表的数据(快速稳定)
- mysql如何在一个表中插入数据的同时,更新另一个表的数据?
- 简单的服务器框架
- org官网:http://struts.apache.org/download.cgi#struts221
- webdriver 学习初步
- ABCpdf.net的使用介绍
- 【算法复习二】货郎担(旅行售货商)动态规划
- Oracle 中用一个表的数据更新另一个表的数据
- git使用简介 续(转载)
- 用NDK编译FFmpeg
- android bugreport分析
- BMP图像格式
- iOS里的MVC
- VS2010 创建和调用动态链接库
- Setting a MAC address for a virtual machine in VMware Fusion
- linux脚本:ssh 启动多个远程程序