设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

oracle pl/sql宝典(第2版)
搜索
查看: 406|回复: 0

【数据库每日一问】oracle的SQL中,根据另一个表中的数据更新表中的数据

[复制链接]
MrLi 发表于 2014-2-15 14:00:05 | 显示全部楼层 |阅读模式

问:
表1:
  1. id    name    desc
  2. -----------------------
  3. 1     a       abc
  4. 2     b       def
  5. 3     c       adf
复制代码
表2:
  1. id    name    desc
  2. -----------------------
  3. 1     x       123
  4. 2     y       345
复制代码
在Oracle SQL,我怎么运行SQL更新语句,可以使用表2中相同的ID更新表1的name和desc?最后得到我想要的结果。
表1:
  1. id    name    desc
  2. -----------------------
  3. 1     x       123
  4. 2     y       345
  5. 3     c       adf
复制代码
问题是从与“使用另一个数据表执行更新语句”,但是是针对Oracle的SQL。

答:这被称为一个相关的更新
  1. UPDATE table1 t1
  2.    SET (name, desc) = (SELECT t2.name, t2.desc
  3.                          FROM table2 t2
  4.                         WHERE t1.id = t2.id)
  5. WHERE EXISTS (
  6.     SELECT 1
  7.       FROM table2 t2
  8.      WHERE t1.id = t2.id )
复制代码
假设需要连接的结果为视图,你也可以
  1. UPDATE (SELECT t1.id,
  2.                t1.name name1,
  3.                t1.desc desc1,
  4.                t2.name name2,
  5.                t2.desc desc2
  6.           FROM table1 t1,
  7.                table2 t2
  8.          WHERE t1.id = t2.id)
  9.    SET name1 = name2,
  10.        desc1 = desc2
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2018-6-24 07:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表