2017年8月29日 星期二

【TSQL】NOT EXIST doesn't return expected result

把 NOT IN 改成 NOT EXIST 結果什麼都查不到

昨天真的是突然腦袋燒到
  1. SELECT M.CustomerID
  2. FROM [TableA] M
  3. WHERE M.LoanCaseID=@loanCaseId
  4. AND M.CustomerID NOT IN
  5. (SELECT DISTINCT CustomerID
  6. FROM [TableB]
  7. WHERE LoanCaseID=@loanCaseId)
  8. ORDER BY M.CustomerID

改成
  1. SELECT M.CustomerID
  2. FROM [TableA] M
  3. WHERE M.LoanCaseID=@loanCaseId
  4. AND NOT EXISTS
  5. (SELECT DISTINCT 1
  6. FROM [TableB]
  7. WHERE LoanCaseID=@loanCaseId)
  8. ORDER BY M.CustomerID

發現怎麼突然什麼都沒查到? ...

  1. SELECT M.CustomerID
  2. FROM [TableA] M
  3. WHERE M.LoanCaseID=@loanCaseId
  4. AND NOT EXISTS
  5. (SELECT DISTINCT 1
  6. FROM [TableB]
  7. WHERE LoanCaseID=@loanCaseId AND
  8. CustomerID = M.CustomerID)
  9. ORDER BY M.CustomerID
相對於原本 M.CustomerID NOT IN (SELECT DISTINCT CustomerID) 的
WHERE LoanCaseID=@loanCaseId AND CustomerID = M.CustomerID 沒寫,當然什麼都不會查到...

沒有留言:

張貼留言