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
A
回答
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
下面是該查詢
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
),唐關聯沒有CSWSecurity
(cs
)記錄。
+0
也看看[這個答案](http://stackoverflow.com/a/16598900/4265352)。它解釋瞭如何使用SQL連接實現不同的集合操作(union,intersect,difference)。 – axiac 2015-03-03 10:59:30
相關問題
- 1. 上面的腳本滾動vim - 如何實現這個
- 2. 這個網站上的加載腳本是如何實現的?
- 3. 避免HTML和腳本標記呈現
- 4. 可以嵌套幾個角度腳本?
- 5. 的Node.js/JavaScript的 - 避免用戶進入腳本和HTML實體
- 6. 我如何可以插入腳本另一個腳本加載
- 7. 如何通過Ruby腳本避免EOFError?
- 8. 如何避免Internet Explorer腳本錯誤
- 9. 避免跨站點腳本
- 10. 如何使用Google Apps腳本實現嵌套表格?
- 11. 添加嵌入腳本到PHP頁面
- 12. 如何退出嵌套的Python腳本?
- 13. 嵌套如果shell腳本
- 14. shell腳本嵌套如果
- 15. 如何在python中實現這個js加密腳本?
- 16. 嵌入腳本,以便加載
- 17. 如何實現這個嵌套的linked_to_function?
- 18. Bind9 DNS區域傳輸腳本 - 避免重複的Bash腳本
- 19. bash的嵌套而:下面的bash腳本只執行一次
- 20. 在這種情況下如何避免嵌套的SQL查詢?
- 21. Ansible劇本與嵌套的python腳本
- 22. 嵌入腳本java嵌入
- 23. 避免第三方腳本的window.location.reload()
- 24. 如何實現嵌套NSSplitView像下面?
- 25. 如何實現一個activate.php腳本?
- 26. 如何隱藏下面的curl腳本到php curl腳本?
- 27. 如何避免嵌套塊
- 28. 嵌套MVEL腳本更新
- 29. 期望嵌套shell腳本
- 30. Bash腳本 - 嵌套變量
它存在於CVPLocal.dbo.CSWSecurity的「not in」中。你的將不會給出所需的輸出。 – ConsiderItDone 2015-03-03 09:35:16