1. 程式人生 > >【沫沫金】Sql子查詢Not In 無結果原因

【沫沫金】Sql子查詢Not In 無結果原因

空值 blog mar 執行 sel ges 期望 ima 數值

背景源碼
select * from ITEM where item_id not in (select parent_item_id from ITEM )

查詢效果

技術分享圖片
無任何匹配值。。。

原因

not in 解析後的執行語句是(id!=1 and id!=2 and id!=null)

註意,其中的null。空值存在將會導致條件整體失敗,所以無任何匹配數值。

解決方案

排除null值,即可完成期望結果。

select * from ITEM where item_id not in (select parent_item_id from ITEM where parent_item_id is not null)

調整後的Sql,執行效果如下
技術分享圖片


回顧下,not in 是and條件,不能有null值。樹結構,父級字段免不了有空值,所以查詢不到。排除null值即可。

【沫沫金】Sql子查詢Not In 無結果原因