求有一定难度的SQL语法

Ruby_周 2003-11-21 09:23:14
已有两个表t1(xxx,aaa,bbb)和t2(aaa,bbb),均已有数据,现在我想把t2表记录aaa和bbb更新到t1中的aaa和bbb,不能破坏xxx列的值,不想使用游标cursor,敢问哪位大侠知道如何解决,越简洁越好!
...全文
35 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-11-21
  • 打赏
  • 举报
回复
update t1 set (aaa,bbb)=(select aaa,bbb from t2 where 條件)
vrv0129 2003-11-21
  • 打赏
  • 举报
回复
update t1 set(aaa,bbb)in (select aaa,bbb from t2 where 條件)
[大楚] 2003-11-21
  • 打赏
  • 举报
回复
老大,恕我愚钝
你要做的是插入还是更新呀!
如果是更新,要以什么条件更新呀?
按记录的顺序吗?
leecooper0918 2003-11-21
  • 打赏
  • 举报
回复

update t1 set (aaa,bbb)=(select aaa,bbb from t2 )
可能会有问题,因为子查询返回的可能是多条记录,就一条
语句当然无法更新,用cursor打开,可以一条条更新.但是速度
就会受影响。

建议: 先备份原始表,然后新建一个与原来相同的表做试验。批量
更新,批量提交。
Ruby_周 2003-11-21
  • 打赏
  • 举报
回复
t1(xxx,aaa,bbb) t2(aaa,bbb)
xxx1 null null aaa1 bbb1
xxx2 null null aaa2 bbb2
xxx1 null null aaa3 bbb3
希望结果t2不变
t1(xxx,aaa,bbb)
xxx1,aaa1,bbb1
xxx2,aaa2,bbb2
xxx1,aaa1,bbba
问题:
1、update t1 set aaa = t2.aaa,bbb = t2.bbb from t2:pl/sql中运行有句法错误
ORA-00933:SQL command not properly ended
这种写法在MS SQL SERVER2000里可以。
2、update t1 set (aaa,bbb)=(select aaa,bbb from t2 )执行提示
ORA-01427:single-row subquery returns more than noe row
bzszp 2003-11-21
  • 打赏
  • 举报
回复
看了三遍也没看懂楼上的要求

看来我得回去补习语文了
Ruby_周 2003-11-21
  • 打赏
  • 举报
回复
感谢beckhambobo(beckham和vrv0129() 和skyxj的方法。还请教beckhambobo(beckham和vrv0129() 和skyxj或其他人,表t1中XXX字段已有记录值xxx1,xxx2,xxx3,xxx1,xxx2,现在还希望两条XXX值均为xxx1的记录aaa,bbb值也相同,也就是说xxx相同的,aaa和bbb也要相同,这能办到吗,用一条语句?
psy2182_cn 2003-11-21
  • 打赏
  • 举报
回复
老大,条件没写呀
这怎么更新呀
岂不是都更新了/?

可以这样:update t1 set aaa = t2.aaa,bbb = t2.bbb from t2 where 条件

可一定要慎重呀!


skyxj 2003-11-21
  • 打赏
  • 举报
回复
update t1 set(aaa, bbb)in (select aaa, bbb from t2 where 条件)
条件没写清楚
pingshx 2003-11-21
  • 打赏
  • 举报
回复
merge???
insert /*+append*/ into table1
select * from table2

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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