update itmmaster SET itmmaster.SEAKEY_0=B.OLD4 
from itmmaster A,ztemp B 
where A.ITMREF_0=B.NEWCODE

解决方案 »

  1.   

    上述语句在SQL中执行是正常的。
      

  2.   

    update itmmaster SET A.SEAKEY_0=B.OLD4 
    from itmmaster A,ztemp B 
    where A.ITMREF_0=B.NEWCODE把itmmaster换成别名A啊,试试吧
      

  3.   

    update itmmaster  A
    SET SEAKEY_0= (
    select B.OLD4 
    from ztemp B 
    where A.ITMREF_0=B.NEWCODE
    )
      

  4.   

    我试了把itmmaster换成别名A,不行。使用gxlineji提供的方法,提供错误“单行子查询返回多个行”错误。
      

  5.   

    子查询里用max()取最大值试下
      

  6.   

    两个表的创建语句
    -- Create table 
    create table ZTEMP 

    NEWCODE VARCHAR2(10), 
    NEWNAME VARCHAR2(100), 
    OLDCODE VARCHAR2(10), 
    OLDNAME VARCHAR2(100), 
    OLD4 VARCHAR2(10) 

    tablespace GJERP_DAT 
    pctfree 10 
    initrans 1 
    maxtrans 255 
    storage 

    initial 64 
    minextents 1 
    maxextents unlimited 
    );-- Create table 
    create table ITMMASTER 

    ITMREF_0 VARCHAR2(30) not null, 
    TSICOD_0 VARCHAR2(18) not null, 
    TSICOD_1 VARCHAR2(18) not null, 
    TSICOD_2 VARCHAR2(18) not null, 
    TSICOD_3 VARCHAR2(18) not null, 
    TSICOD_4 VARCHAR2(18) not null, 
    TCLCOD_0 VARCHAR2(15) not null, 
    CLSTYP_0 NUMBER(3) not null, 
    SEAKEY_0 VARCHAR2(60) 

    tablespace GJERP_DAT 
    pctfree 10 
    initrans 1 
    maxtrans 255 
    storage 

    initial 19 
    minextents 1 
    maxextents unlimited 
    );
      

  7.   


    update itmmaster SET A.SEAKEY_0=B.OLD4 
    from itmmaster A,ztemp B 
    where A.ITMREF_0=B.NEWCODE显示“SQL命令未正确结束”错误。
      

  8.   

    update itmmaster SET itmmaster.SEAKEY_0=(select ztemp.OLD4 from ztemp where itmmaster.ITMREF_0=ztemp.NEWCODE);
      

  9.   

    drop table ztemp
    create table ZTEMP 

    NEWCODE VARCHAR2(100), 
    NEWNAME VARCHAR2(100), 
    OLDCODE VARCHAR2(10), 
    OLDNAME VARCHAR2(100), 
    OLD4 VARCHAR2(100) 
    )
    drop table ITMMASTER 
    create table ITMMASTER 

    ITMREF_0 VARCHAR2(100) not null, 
    TSICOD_0 VARCHAR2(18) not null, 
    TSICOD_1 VARCHAR2(18) not null, 
    TSICOD_2 VARCHAR2(18) not null, 
    TSICOD_3 VARCHAR2(18) not null, 
    TSICOD_4 VARCHAR2(18) not null, 
    TCLCOD_0 VARCHAR2(15) not null, 
    CLSTYP_0 NUMBER(3) not null, 
    SEAKEY_0 VARCHAR2(100) 

    update itmmaster SET itmmaster.SEAKEY_0=(select ztemp.OLD4 from ztemp where itmmaster.ITMREF_0=ztemp.NEWCODE);
    --where itmmaster.ITMREF_0=ztemp.NEWCODE
      

  10.   

    drop table ztemp
    create table ZTEMP 

    NEWCODE VARCHAR2(100), 
    NEWNAME VARCHAR2(100), 
    OLDCODE VARCHAR2(10), 
    OLDNAME VARCHAR2(100), 
    OLD4 VARCHAR2(100) 
    )
    drop table ITMMASTER 
    create table ITMMASTER 

    ITMREF_0 VARCHAR2(100) not null, 
    TSICOD_0 VARCHAR2(18) not null, 
    TSICOD_1 VARCHAR2(18) not null, 
    TSICOD_2 VARCHAR2(18) not null, 
    TSICOD_3 VARCHAR2(18) not null, 
    TSICOD_4 VARCHAR2(18) not null, 
    TCLCOD_0 VARCHAR2(15) not null, 
    CLSTYP_0 NUMBER(3) not null, 
    SEAKEY_0 VARCHAR2(100) 

    update itmmaster SET itmmaster.SEAKEY_0=(select ztemp.OLD4 from ztemp where itmmaster.ITMREF_0=ztemp.NEWCODE and rownum=1);
    --where itmmaster.ITMREF_0=ztemp.NEWCODE