Oracle相关,更新语句中应用子查询,子查询的条件为什么会同时作用到更新操作?

updatetest1t1set(v2,v3)=(selectv3,v2fromtest3t3wheret1.v1=t3.v1)whereexists(select1fr... update test1 t1
set (v2,v3) =
(select v3,v2 from test3 t3 where t1.v1 = t3.v1)
where exists(select 1 from test3 t3 where t1.v1 = t3.v1)

update test1 t1
set (v2,v3) =
(select v3,v2 from test3 t3 where t1.v1 = t3.v1)

update test1 t1
set (v2,v3) =
(select v3,v2 from test3 t3)

以上三个sql的区别
展开
 我来答
匿名用户
推荐于2017-07-19
展开全部
第一句写的最完整,加了存在性限定条件,更新操作时会先去找限定条件,在执行更新操作;第二句没有where限定条件,则用子查询的关联表结果集全部进行更新操作;第三句没有关联查询,则用test3表全部结果集进行更新test1
追问
第三个sql是会报错的,而第二个却不会,为什么?毕竟第二个也是返回多个值的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式