本帖最后由 c_cqu 于 2010-08-28 00:34:00 编辑

解决方案 »

  1.   

    2. SELECT mth_skid
      FROM ADWU.CAL_MASTR_DIM d
      WHERE EXISTS (SELECT 1
    --  FROM (SELECT DAY_SKID FROM ADWU.SHPMT_HIST_FCT_NEW) f   --- 这个就不要这么麻烦了吧
        from ADWU.SHPMT_HIST_FCT_NEW f 
      WHERE f.day_skid = d.CAL_MASTR_SKID)至于结果的话,是不是有多个重复的mth_skid, 没有加distinct 的原因?
      

  2.   

    SELECT  distinct mth_skid
      FROM ADWU.CAL_MASTR_DIM d
      WHERE EXISTS (SELECT 1
        from ADWU.SHPMT_HIST_FCT_NEW f 
      WHERE f.day_skid = d.CAL_MASTR_SKID)
      

  3.   

    SELECT distinct mth_skid
      FROM ADWU.CAL_MASTR_DIM d  WHERE EXISTS (SELECT 1
      FROM  ADWU.SHPMT_HIST_FCT_NEW f
      WHERE f.day_skid = d.CAL_MASTR_SKID)
    试试。
      

  4.   

    一般查询时用内连接代替exists一般
    delete 与 exists组合
    select 与 not exists组合
      

  5.   

    2楼帮你把语句2简化了一下,
    表CAL_MASTR_DIM的字段CAL_MASTR_SKID跟表SHPMT_HIST_FCT_NEW的字段day_skid关联,你select的是
    mth_skid,你是怎么判断你的语句2得到的结果有问题,
    不懂你的exists在这里居然查到一些不存在于SHPMT_HIST_FCT_NEW的数据是什么意思