下面的语句怪问题:我把a表的数据插入到b表中,同时通过c表的数据更新b表,a表的条件中clfl 为'1','2','3',但是有时候偶尔会把 clfl is null的数据插入到b表中
INSERT INTO YBXX.YB_FYMATCH 
( HOSBH , LX , ZWMC , JJDW , CDXZ , FWXMBM , SRM1 , SRM2 , YBZXDM, YBXZBZ, ZXZT, ZXWYM )
SELECT A.BH, '2', A.MC, D.YBZXDM, A.CLFL, A.YLBZBH, 
A.SRM1, A.SRM2, C.YBCLBH, DECODE(C.XY_DJXEBZ, '是','1', '1', '1','0'),  
DECODE(C.YBCLBH, NULL, 'A','B'), DECODE(C.YBCLBH, NULL, '', '2')
FROM YLFYB A , YBXX.YB_FYMATCH B, YBXX.YB_CLDIC C, YBXX.YB_DICPP D
WHERE A.CLFL IN ('1','2','3') AND A.FS NOT IN ('1','M','Y','Z','C') 
AND D.FLDM = '009' 
AND A.BH = B.HOSBH(+)
AND B.HOSBH IS NULL
AND A.YBBM = C.OLDYBBM(+)
AND A.DW =  D.HOSMC;
这种问题有时候出现有时候不出现

解决方案 »

  1.   

    1.你使用了外连接,有可能会取到a.clfl=null的情况2.“同时通过c表的数据更新b表”  这部分的SQL语句是怎么写的改成这样试:INSERT INTO YBXX.YB_FYMATCH 
    ( HOSBH , LX , ZWMC , JJDW , CDXZ , FWXMBM , SRM1 , SRM2 , YBZXDM, YBXZBZ, ZXZT, ZXWYM ) 
    SELECT A.BH, '2', A.MC, D.YBZXDM, A.CLFL, A.YLBZBH, 
    A.SRM1, A.SRM2, C.YBCLBH, DECODE(C.XY_DJXEBZ, '是','1', '1', '1','0'),  
    DECODE(C.YBCLBH, NULL, 'A','B'), DECODE(C.YBCLBH, NULL, '', '2') 
    FROM 
    (select * from ylfyb where a.clfl in ('1','2','3') and AND A.FS NOT IN ('1','M','Y','Z','C')) A , 
    YBXX.YB_FYMATCH B, 
    YBXX.YB_CLDIC C, 
    YBXX.YB_DICPP D 
    WHERE  D.FLDM = '009' 
    AND A.BH = B.HOSBH(+) 
    AND B.HOSBH IS NULL 
    AND A.YBBM = C.OLDYBBM(+) 
    AND A.DW =  D.HOSMC;