MySQL中,not in子查詢

今天寫sql語句的時候,希望通過not in子查詢來限制查詢結果,實際SQL語句如下:

 

select  ID as id, TYPE_CODE as typeCode , TYPE_NAME as typeName ,

PARENT_ID as parentsId , STYLE as style , LEVELS as levels

from type_code

where PARENT_ID = '30119a0e-2f57-473d-9f1d-2843561e9064' and ID not in

            ( select  PARENT_ID from type_code where PARENT_ID);

 

結果滿足查詢的條件爲空……

後來發現,子查詢中存在字段的某些值爲null,所以導致了count=0. 

所以,將SQL調整爲如下:

select  ID as id, TYPE_CODE as typeCode , TYPE_NAME as typeName ,

PARENT_ID as parentsId , STYLE as style , LEVELS as levels

from type_code

where PARENT_ID = '30119a0e-2f57-473d-9f1d-2843561e9064' and ID not in

            ( select  PARENT_ID from type_code where PARENT_ID is not null);

這樣就能正確的查出結果了!

 

總結:MySQL中如果要用not in在子查詢中限制結果,那必須要將子查詢的結果集限制爲不含null,不然查詢結果count = 0.

 

 

Allen

2011-03-29

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章