PLSQL外键悲剧

 SELECT DISTINCT GE.APPLY_TYPE_ID,P.*,
                 GE.ENDO_ID GEN_ENDO_ID,
                 S.STATUS_NAME,
                 R.BIZ_PRDT_CODE,
                 TO_CHAR(GE.EFF_DATE, 'dd/mm/yyyy') ENDO_EFF_DATE,
                 GE.CREATOR_ID ENDO_CREAOR
   FROM T_POLICY_GENERAL_LOG P,
        T_GEN_POLICY_STATUS  S,
        T_PRODUCT_GENERAL    R,
        T_GEDO_ENDORSEMENT   GE
  WHERE S.STATUS_ID = P.STATUS_ID
    AND P.PRODUCT_ID = R.PRODUCT_ID
    AND P.POLICY_CATE != 2
    AND P.POLICY_NO = '75041472'
    AND P.INSERT_TIME >= TO_DATE(' 05/01/2011 ', 'dd/MM/yyyy')
    AND P.INSERT_TIME <= TO_DATE('12/01/2011 ', 'dd/MM/yyyy') + 1
    AND P.ENDO_ID = GE.NEXT_ENDO_ID(+)
    AND P.BACKUP_FLAG = 1
    AND (GE.TYPE_ID <> 32 OR GE.TYPE_ID IS NULL)
    --外连接悲剧
    --不能怎么写,这样得到的数据时空的
    --AND GE.APPLY_TYPE_ID <>12
    --要加GE.APPLY_TYPE_ID IS NULL
    AND (GE.APPLY_TYPE_ID <>12 OR GE.APPLY_TYPE_ID IS NULL)
    --AND GE.NEXT_ENDO_ID <> 96816
    AND (GE.STATUS_ID IS NULL OR GE.STATUS_ID NOT IN (150, 400, 250))
  ORDER BY P.INSERT_TIME DESC ;

不添条件 AND (GE.APPLY_TYPE_ID <>12 OR GE.APPLY_TYPE_ID IS NULL) 数据:

 
APPLY_TYPE_ID ENDO_ID BACKUP_FLAG POLICY_ID PRODUCT_ID POLICY_CATE
12 96817 1 442681 1000004533 1
null 96816 1 442681 1000004533 1
原文地址:https://www.cnblogs.com/zenghanxi/p/1934012.html