Insert into A(field1,field2,...) select value1,value2,... from B试试这种方法,适当的改进一下,根据相同字段A1建立连接,筛选结果。
大哥,我不是要插入新的,而是要在原有基础上进行更新
@liuchang8877: 哦,update啊,容我再想想
@liuchang8877: 用游标,先把B表中的数据取出来放到游标里,遍历游标,根据相同字段A1更新A表,这样应该就可以了。
@雪拥蓝关: 我这样尝试过:
-----------------------------------
update A a set A2=(select b.A2 from B b where b.A1=a.A1 and b.A3=a.A3 )
这样报错,说“单条语句查询返回多条”oracle 10g
在不用存储过程情况下,能有解决方法吗?
@liuchang8877: 先试一下这个方法update A set A2=B.A2 from A, B where A.A1=B.A1
@liuchang8877: 这样的话筛选结果大于一条,赋值的话是会有异常的,可以先把结果放到游标中,遍历游标,进行赋值。
@雪拥蓝关:
--------------------------------
update cw_kpsz t set t.cc=m.cc from td_cc_translate m where t.ny='201109' and m.ny='201109' and t.szbz = '1' and m.kpcc=t.cc
实际情况语句-- 语法不过 =_=!
@liuchang8877: 你看看我那个语法结构,update A set A2=B.A2 from A, B where A.A1=B.A1 ,from后面是两个表,貌似你那只有一个啊,改改试下,我用的是SQL数据库,语法没有问题的,不知道oracle下什么情况。不行的话就用游标做吧,也不是太麻烦。
@雪拥蓝关:
上面那语法还是不过
-----------------------------
update cw_kpsz set cc=
(select m.cc from cw_kpsz t ,td_cc_translate m
where t.ny='201109' and m.ny='201109' and t.szbz = '1' and m.kpcc=t.cc)
这个方式 ora-01427 单条子查询多于一行
还是用游标试试吧。唉
@liuchang8877: 呃...一直有学习oracle的想法,资料都有,但是一直没...o(︶︿︶)o 唉,看来该狠下心来学习了。
@liuchang8877: 哦,貌似他用的是PL/SQL,不错,学习了
A表的联合主键跟B表的联合主键对应吗?
如果对应:update A set A.A2=B.A2 from B where A.A1=B.A1 and A.A3=B.B3
你试试,不知道是不是你想要的
对应......这句语法不过。。。。
@liuchang8877: 你用的什么数据库,我用的sql通过
主鍵是 哪個?
A 主键 A1+A3 , B 主键A1+B3 联合主键。
@liuchang8877:
update A set A.A2=( select B.A2 from B where A.A1=B.A1 and A.A3=B.B3)
@無限遐想:
这个方式 ora-01427 单条子查询多于一行
@liuchang8877: 那你的主鍵 有問題。或則 數據有問題。
update USERS set USERS.user_name=(select user_name from USERS B where USERS.user_id=b.user_id)
我這個語句順利執行。
UPDATE A set A2=B.A2 from B where A.A1+A.A3=B.A1+B.B3