通过Oracle中的merge实现根据一张表的内容更新另外张表数据的功能
2010-01-07 21:28
901 查看
最近由于项目需要一直想找个关于Oracle中实现根据一张表的内容更新另外张表数据的功能,在网上找了半天也没找到个合适的方法,虽然看到有人说可以通过存储过程来实现,但觉得那样太麻烦,今在查找同样的功能时发现了Oracle中的merge,于是花了点时间用比较简单的方法实现了这个功能。语法就免了,网上一搜一堆,看具体语句吧,代码也比较简单,通过字面就可以理解了,最简单的版本应是:
具体项目中的语句是:
merge具有更新和插入的功能,如果通过On关系没有找到匹配的则会新增结果,如果只想单纯的更新数据只要把后面的关于插入的操作注释掉就好
merge into test1 t1 using test2 t2 on (t1.id = t2.id) when matched then update set t1.name = t2.name when not matched then insert values(t2.id,t2.name)
具体项目中的语句是:
merge into public_field t1 using (select xx.link_id, yy.save_path from (select * from public_field x where x.link_id in (select t.id from scenic t) and x.ci_logo is null) xx left join (select * from IMAGE_INFO bb where bb.id in (select min(id) id from IMAGE_INFO a where a.link_id in (select t.id from scenic t) and a.link_tab = 'SCENIC' group by link_id)) yy on xx.link_id = yy.link_id) t2 on (t1.link_id = t2.link_id) when matched then update set t1.ci_logo = t2.save_path --when not matched then --insert values(t2.id,t2.name)
merge具有更新和插入的功能,如果通过On关系没有找到匹配的则会新增结果,如果只想单纯的更新数据只要把后面的关于插入的操作注释掉就好
相关文章推荐
- oracle更新大量数据太慢,可以通过游标实现的例子
- Python通过调用mysql存储过程实现更新数据功能示例
- 通过IO流讲一个文件里面的内容读到另外一个文件里面(文件复制功能的实现)
- SQL server 根据另一张表的字段更新现有的数据表
- 用merge实现仓库数据的增量更新
- 通过JDBC实现对Oracle,mysql数据库的增删改查,模糊查询,查询全部,根据ID查询,分页查询,统计查询,
- Oracle实现数据不存在则插入,数据存在则更新(insert or update)
- oracle merge及其他方式实现存在更新不存在插入操作
- JQuery 中根据向左或向右箭头 实现相册上一张 下一张功能。
- mysql查询数据,根据条件更新到另一张表
- 用ADO.Net实现Oracle大批量数据更新优化
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 用sql从一张表更新数据到另外一张表(多表数据迁移)
- 通过oms实现Oracle的数据备份
- struts2开发时通过interceptor拦截器实现输入数据过滤前后空格的功能
- MySQL数据库(表)的导入导出(备份和还原) mysql 根据一张表数据更新另一张表
- mysql 根据select内容批量更新数据
- mysql 根据select内容批量更新数据