2015-03-03 53 views
0
SELECT UserDCID AS UserDCCompForDelCount1 
FROM CDICentral.dbo.UserDCComponent AS udc 
WHERE(
    UserDCID IN(
     SELECT UserDCID FROM CDICentral.dbo.UserDC AS ud WHERE (
      UserID NOT IN(
       SELECT UserID FROM CVPLocal.dbo.CSWSecurity AS cs 
      ) 
     ) 
    ) 
) 

回答

0

試試這個sql查詢

SELECT UserDCID AS UserDCCompForDelCount1 
FROM CDICentral.dbo.UserDCComponent AS udc 
INNER JOIN CDICentral.dbo.UserDC AS ud ON udc.UserDCID=ud.UserDCID 
INNER JOIN CVPLocal.dbo.CSWSecurity AS cs ON ud.UserDCID=cs.UserID 
+0

它存在於CVPLocal.dbo.CSWSecurity的「not in」中。你的將不會給出所需的輸出。 – ConsiderItDone 2015-03-03 09:35:16

0

下面是該查詢

SELECT UserDCID AS UserDCCompForDelCount1 FROM CDICentral.dbo.UserDCComponent AS udc 
INNER JOIN (
     SELECT UserDCID FROM CDICentral.dbo.UserDC AS ud 
     EXCEPT 
     SELECT UserID FROM CVPLocal.dbo.CSWSecurity AS cs 
    )Table T 
ON T.UserDCID = udc.UserDCID 
0

讓我們先從內部查詢:

SELECT UserDCID FROM CDICentral.dbo.UserDC AS ud WHERE (
    UserID NOT IN(
     SELECT UserID FROM CVPLocal.dbo.CSWSecurity AS cs 
    ) 
) 

他們從表中選擇行ud在表cs中沒有匹配,使用字段UserID將它們連接在兩者中。

查詢可以寫成一個LEFT JOIN

SELECT ud.UserDCID 
FROM CDICentral.dbo.UserDC AS ud 
    LEFT JOIN CVPLocal.dbo.CSWSecurity AS cs 
     ON ud.UserID = cs.UserID  # join the tables on common field `UserID` 
WHERE cs.UserID IS NULL    # the row from `ud` has no match in `cs` 

回到大查詢(我剝奪了高於重構的一部分,因爲停留在道路下面的解釋):

SELECT UserDCID AS UserDCCompForDelCount1 
FROM CDICentral.dbo.UserDCComponent AS udc 
WHERE(
    UserDCID IN (
     SELECT UserDCID ... 
     ) 
    ) 
) 

udc和結果集由字段UserDCID(兩者都存在)連接時,此查詢將選擇udc中與內部查詢(刪除的)生成的結果集中的匹配項的行。

這是一個簡單INNER JOIN(讓我們把重構內部查詢後):

SELECT udc.UserDCID AS UserDCCompForDelCount1 
FROM CDICentral.dbo.UserDCComponent AS udc 
    INNER JOIN CDICentral.dbo.UserDC AS ud 
     ON udc.UserDCID = ud.UserDCID 
    LEFT JOIN CVPLocal.dbo.CSWSecurity AS cs 
     ON ud.UserID = cs.UserID 
WHERE cs.UserID IS NULL 

讓我們讀出新的查詢做什麼:它選擇UserDCComponent S(udc)與UserDC S(ud),唐關聯沒有CSWSecuritycs)記錄。

+0

也看看[這個答案](http://stackoverflow.com/a/16598900/4265352)。它解釋瞭如何使用SQL連接實現不同的集合操作(​​union,intersect,difference)。 – axiac 2015-03-03 10:59:30