不用from,它就不认识TABLEVB2.departVB2_delis这个字段!问题不在这里

解决方案 »

  1.   

    Update TABLEVB1  set departVB1_id=(select departVB2_id from TABLEVB2 where TABLEVB1.departVB1_delis=TABLEVB2.departVB2_delis)
      

  2.   

    你是用oracle吗?
    在oracle里不支持这种写法的
      

  3.   

    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)现学现卖,呵呵:)
      

  4.   

    用游标
      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;
      

  5.   

    你的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;
      

  6.   

    有这么麻烦吗?老大们?在update中不能用from是肯定的了