簡體   English   中英

NOT IN嵌套子查詢返回空集,因此沒有連接結果

[英]NOT IN nested sub query returns empty set and thus no results for join

我正在編寫一個春季批處理程序,正在尋找即將到期的項目。 工作正常,但我注意到我的一個測試中出了問題。 這是一個新的批處理程序,它依賴於另一個新表來跟蹤它報告的過期項目。 例如:

  • 獲取將在vendor_notification表中沒有條目的項目即將到期
  • 發電子郵件
  • 其他業務邏輯
  • 在vendor_notificaton表中創建條目

這是我的sql語句

select * from item join vendor_notification 
where item.item_id NOT IN(SELECT vendor_notification.item_id 
FROM vendor_notification);

只要vendor_notification表中有數據,哪個工作正常。 但是,一旦我重置並清除測試數據,就不會返回任何結果。 如果我在vendor_notification表中添加一行,並在項目中添加新行,那么我會獲得該新行。

有沒有更好的方法來執行上面的查詢,以便我處理嵌套查詢的空返回集?

如果內部查詢返回null,則NOT IN子句將計算為false。

select * from item 
where (SELECT count(vendor_notification.item_id) 
FROM vendor_notification WHERE vendor_notification.item_id = item.item_id) = 0;

內部查詢現在返回匹配記錄的計數,如果沒有則將返回零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM