Update TABLEVB1 set departVB1_id=(select departVB2_id from TABLEVB2 where TABLEVB1.departVB1_delis=TABLEVB2.departVB2_delis)
你是用oracle吗? 在oracle里不支持这种写法的
Update TABLEVB1 set departVB1_id=(select departVB2_id from TABLEVB2 where TABLEVB1.departVB1_delis=TABLEVB2.departVB2_delis) where exists(select 1 from TABLEVB2 where TABLEVB1.departVB1_delis=TABLEVB2.departVB2_delis)现学现卖,呵呵:)
用游标 Cursor Cur_Cursor1 IS Select B.departVB2_id From departVB1 A,departVB2 B where A.departVB1_delis=B.departVB2_delis;For i in Cur_Cursor1 loop Update TableVB1 set departVB1_id=i.departVB2_id ; end loop;
你的insert语句,commit了么?CREATE table TABLEVB1 ( departVB1_id number(11) NOT NULL , departVB1_name varchar2(40) default NULL, departVB1_delis number(1) default 0, PRIMARY KEY (departVB1_id) ) ; CREATE table TABLEVB2 ( departVB2_id number(11) NOT NULL , departVB2_name varchar2(40) default NULL, departVB2_delis number(1) default 0, PRIMARY KEY (departVB2_id) ) ;INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (18,'aa',0); INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (19,'bb',2); INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (20,'cc',3); INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (21,'cc',4);INSERT INTO TABLEVB2(departVB2_id,departVB2_name,departVB2_delis) values (30,'aa',5); INSERT INTO TABLEVB2(departVB2_id,departVB2_name,departVB2_delis) values (31,'bb',6); INSERT INTO TABLEVB2(departVB2_id,departVB2_name,departVB2_delis) values (32,'cc',4);commit;UPDATE TABLEVB1 SET departVB1_id=TABLEVB2.departVB2_id FROM TABLEVB2 WHERE TABLEVB1.departVB1_delis=TABLEVB2.departVB2_delis;
在oracle里不支持这种写法的
where exists(select 1 from TABLEVB2 where TABLEVB1.departVB1_delis=TABLEVB2.departVB2_delis)现学现卖,呵呵:)
Cursor Cur_Cursor1 IS
Select B.departVB2_id
From departVB1 A,departVB2 B
where A.departVB1_delis=B.departVB2_delis;For i in Cur_Cursor1 loop
Update TableVB1
set departVB1_id=i.departVB2_id ;
end loop;
departVB1_id number(11) NOT NULL ,
departVB1_name varchar2(40) default NULL,
departVB1_delis number(1) default 0,
PRIMARY KEY (departVB1_id)
) ;
CREATE table TABLEVB2 (
departVB2_id number(11) NOT NULL ,
departVB2_name varchar2(40) default NULL,
departVB2_delis number(1) default 0,
PRIMARY KEY (departVB2_id)
) ;INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (18,'aa',0);
INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (19,'bb',2);
INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (20,'cc',3);
INSERT INTO TABLEVB1(departVB1_id,departVB1_name,departVB1_delis) values (21,'cc',4);INSERT INTO TABLEVB2(departVB2_id,departVB2_name,departVB2_delis) values (30,'aa',5);
INSERT INTO TABLEVB2(departVB2_id,departVB2_name,departVB2_delis) values (31,'bb',6);
INSERT INTO TABLEVB2(departVB2_id,departVB2_name,departVB2_delis) values (32,'cc',4);commit;UPDATE TABLEVB1 SET departVB1_id=TABLEVB2.departVB2_id FROM TABLEVB2 WHERE TABLEVB1.departVB1_delis=TABLEVB2.departVB2_delis;