我對通過NOT EXISTSvs. LEFT OUTER JOINwith NULL 得到的結果感到困惑。
考慮以下 2 個查詢,它們會產生非常不同的結果。請注意,這fkMasterPersonID不是右表的外鍵 ( tblInternetMasterPerson)
查詢 1
SELECT tl.pkLeadID, tl.fkMasterPersonID
FROM dbo.tblPhoneLead tl
WHERE NOT EXISTS (
SELECT MasterPersonID
FROM dbo.tblInternetMasterPerson
)
以上沒有回傳結果
查詢 2
SELECT tl.pkLeadID, tl.fkMasterPersonID
FROM dbo.tblPhoneLead tl
LEFT JOIN dbo.tblInternetMasterPerson mp
ON tl.fkMasterPersonID = mp.MasterPersonID
WHERE tl.fkMasterPersonID IS null
上面回傳 237 條記錄,fkMasterPersonID它們都是 NULL。
NOT EXISTS通過在 上是否fkMasterPersonID不存在來確定的正確方法是dbo.tblInternetMasterPerson什么?該表確實有該列pkMasterPersonID,但它是自動遞增的,并且不是任何其他表的外鍵。
uj5u.com熱心網友回復:
您需要將存在的子查詢與外部查詢相關聯。這是一種方法:
SELECT tl.pkLeadID, tl.fkMasterPersonID
FROM dbo.tblPhoneLead tl
WHERE NOT EXISTS (
SELECT 1
FROM dbo.tblInternetMasterPerson mp
WHERE mp.MasterPersonID = tl.fkMasterPersonID
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/452553.html
