日期:2014-05-17  浏览次数:20651 次

NOT EXISTS

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 呢?若不存在写的意义何在?

------解决方案--------------------

--这逻辑看起来确实....!!! ???
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 )

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