求一条非常简单的语句

netboygg 2008-07-07 03:34:57
有2个表 根据t1.a=t2.a 来更新t1.b=t2.b:
update t1 set b=(select t2.b from t2 where t1.a=t2.a);
为什么在from里添加一个t1写成如下语句就会报单行子查询返回多行?
update t1 set b=(select t2.b from t2,t1 where t1.a=t2.a);
为什么添加第3张表也不行:如果要添加第3张表的条件 改怎么写?
update t1 set b=(select t2.b from t2,t3,t1 where t1.a=t2.a and t1.a = t3.a and t2.b=t3.b);
我写成这样为什么会编译不通过?报ORA-00600内部错误代码,参数:[qctVCO:csform],[0],[0],[0],[0],[1],[1],[0]
update t1 set b=(select t2.b from t2 Where t2.b in
(select t2.b from t2,t3,t1 where t1.a=t2.a and t1.a = t3.a and t2.b=t3.b))
正确的写法是什么啊? 谢谢
...全文
117 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
netboygg 2008-07-09
  • 打赏
  • 举报
回复
那如果有第3张表呢? 又改怎么写?
Well 2008-07-08
  • 打赏
  • 举报
回复
关联语句。。oracle不支持像sql语句
update a
set a.val=b.val
from a,b
where a.id=b.id
应该应用
update a
set a.val=(select val from b where a.id=b.id)
where a.id=(select a from b where a.id=b.id)
或者用
update()语句
Well 2008-07-08
  • 打赏
  • 举报
回复
关联语句。。oracle不支持像sql语句
update a
set a.val=b.val
from a,b
where a.id=b.id
应该应用
update a
set a.val=(select val from b where a.id=b.id)
where a.id=(select a from b where a.id=b.id)
netboygg 2008-07-08
  • 打赏
  • 举报
回复
那如果有第3张表呢? 又改怎么写?
vc555 2008-07-07
  • 打赏
  • 举报
回复
update t1
set b=(select b from t2 where a=t1.a)--如果T2有多个a满足a=t1.a,那么就会返回多个b,这时就无法与等号匹配
where a=(select a from t2 where a=t1.a);
netboygg 2008-07-07
  • 打赏
  • 举报
回复
列值不唯一是不是指 不管是读取列的值不唯一吗?还是写入列?
lxzooz 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vc555 的回复:]
update t1
set b=(select b from t2 where a=t1.a)
where a=(select a from t2 where a=t1.a);
[/Quote]

正解
vc555 2008-07-07
  • 打赏
  • 举报
回复
判断“=”条件时,如果你的列值不唯一,这样更新是不行的。
vc555 2008-07-07
  • 打赏
  • 举报
回复
update t1
set b=(select b from t2 where a=t1.a)
where a=(select a from t2 where a=t1.a);

netboygg 2008-07-07
  • 打赏
  • 举报
回复
update t1
set t1.b=t2.b
from t1,t2
where t1.a=t2.a
我不能运行啊
chenqingyu 2008-07-07
  • 打赏
  • 举报
回复
你的t2表的a值不唯一,所以更新出错.
估计需要细化一下条件.
ejoe313 2008-07-07
  • 打赏
  • 举报
回复
update t1
set t1.b=t2.b
from t1,t2
where t1.a=t2.a
netboygg 2008-07-07
  • 打赏
  • 举报
回复
有人吗?
netboygg 2008-07-07
  • 打赏
  • 举报
回复
我的工具是pl/sql developer

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧