select  RESOURCE.TYPE, A.FILENAME, A.PATH,  a.hashvalue, A.EFFECTIVEDATE from version A  Left Join RESOURCE on RESOURCE.ID = A.RESOURCEID AND not exists(select * from version B where A.RESOURCEID = B.ResourceID and A.PROVIDERID = B.PROVIDERID and A.MCID = B.MCID )
没看懂。A 跟B 其实是一个表吧?那怎么可能出现 A.RESOURCEID = B.ResourceID 呢?若不存在写的意义何在?

解决方案 »

  1.   


    --这逻辑看起来确实....!!! ???
    SELECT  RESOURCE.TYPE ,
            A.FILENAME ,
            A.PATH ,
            a.hashvalue ,
            A.EFFECTIVEDATE
    FROM    version A
            LEFT JOIN RESOURCE ON RESOURCE.ID = A.RESOURCEID
                                  AND NOT EXISTS ( SELECT   *
                                                   FROM     version B
                                                   WHERE    A.RESOURCEID = B.ResourceID
                                                            AND A.PROVIDERID = B.PROVIDERID
                                                            AND A.MCID = B.MCID )
      

  2.   

    not exists自连接查询必须至少有一个不等的条件,否则与本条数据链接的时候条件全部符合就返回不了结果了