• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > 在Oracle数据库中同时更新两张表的简单方法

在Oracle数据库中同时更新两张表的简单方法

作者:王小明123 字体:[增加 减小] 来源:互联网 时间:2017-05-11

王小明123通过本文主要向大家介绍了oracle数据库使用方法,oracle数据库备份方法,oracle数据库恢复方法,oracle数据库方法,oracle数据库安装方法等相关知识,希望本文的分享对您有所帮助

以前只会写一些简单的updaet语句,比如updae table set c1='XXX' 之类的

今天遇到一个数据订正的问题,项目背景如下,有个表A,有两个字段a1,a2还有一个关联表B,其中也有两个字段,b1和b2。其中a2和b2是关联的,想把A中的字段a1更新成B中的b1

理论上sql应该挺好写的,但是在oralce中实现了半天一直报语法错误。而且确实还有些小小细节没有注意到。

首先上测试数据

表1,ZZ_TEST1

20151121174054751.jpg (422×107)

表2,ZZ_TEST2

20151121174127229.jpg (299×109)

要把表一的text更新成表二的text1值,对应的sql如下:

update ZZ_TEST1 t1 set t1."text" = (
 select T2."text1" from ZZ_TEST2 t2 where T2."pid"=t1."id"
) 
WHERE EXISTS
(
 SELECT 1 FROM ZZ_TEST2 t2 where T2."pid"=t1."id"
)
</div>

后面的where条件表示一个限制条件,只更新那些符合条件的数据,也可以写成

update ZZ_TEST1 t1 set t1."text" = (
 select T2."text1" from ZZ_TEST2 t2 where T2."pid"=t1."id"
)
where t1."id" in (select "pid" from ZZ_TEST2 )

</div>

另外还有一种merge的写法,对应的sql如下:

merge into ZZ_TEST1 t1 using ZZ_TEST2 t2 on (t1."id" =t2."pid") 
 
when matched then
 
update set t1."text"=t2."text1"
</div>

为了避免T2中有多条数据对应T1中的数据,可以把sql改成如下的方式:

MERGE INTO ZZ_TEST1 t1 USING 
( 
SELECT * FROM ZZ_TEST2 X WHERE X. ROWID = 
(SELECT MAX(Y.ROWID) FROM ZZ_TEST2 Y WHERE X."id" = Y."id" )
 ) 
t2 
ON (t1."id" = t2."pid") 
WHEN MATCHED THEN
UPDATE SET t1."text" = t2."text1"
</div>

还有一种update from 的语法,经过测试在oracle和mysql中不适用


总结一下,项目中尝尝需要把一张表的字段更新到另一张表中的某一个字段。可以使用update语法,并要做好限定。会使用merge的语法,另外还有一种merge的语法也可以,update from 不能再oracle和mysql中使用。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle连接远程数据库的四种方法
  • 检测oracle数据库坏块的方法
  • ORACLE查询删除重复记录三种方法
  • 在Oracle数据库中同时更新两张表的简单方法
  • oracle列合并的实现方法
  • Oracle数据库并行查询出错的解决方法
  • 彻底删除Oracle数据库的方法
  • Oracle数据库的启动与关闭方法
  • Oracle数据库账号被锁定解决方法
  • ORACLE数据库查看执行计划的方法

相关文章

  • 2017-05-11Oracle 的入门心得 强烈推荐
  • 2017-05-11Oracle中使用Rownum分页详细例子
  • 2017-05-11解析jdbc处理oracle的clob字段的详解
  • 2017-05-11Oracle 11g数据库安装与卸载的方法图解
  • 2017-05-11oracle 11g RAC 常用命令整理分享
  • 2017-05-11Oracle 常用的SQL语句
  • 2017-05-11Oracle数据库安全策略分析(一)第1/2页
  • 2017-05-11Oracle连接远程数据库的四种方法
  • 2017-05-11oracle常用sql查询语句部分集合(图文)
  • 2017-05-11在window操作系统上安装Oracle10g图文教程

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • oracle表空间中空表统计方法示例介绍
    • ORACLE常用数值函数、转换函数、字符串函数
    • oracle 层次化查询(行政区划三级级联)
    • Oracle外键不加索引引起死锁示例
    • 在Oracle关闭情况下如何修改spfile的参数
    • oracle数据库删除数据Delete语句和Truncate语句的使用比较
    • ORACLE数据库查看执行计划的方法
    • 数据库数据恢复及表恢复
    • SQL中Charindex和Oracle中对应的函数Instr对比
    • Oracle一个用户如何访问其它用户的表应用指南

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有