mysql not in 查詢不出資料
阿新 • • 發佈:2018-12-18
表結構如下
表Table_A:
專案 | 數量 |
---|---|
id | name |
1 | 張三 |
2 | 趙四 |
3 | 王五 |
4 | 徐六 |
表Table_B:
專案 | 數量 |
---|---|
id | name |
1 | null |
2 | 趙四 |
3 | 王五 |
sql:
SELECT * FROM Table_A a WHERE a.name NOT IN (SELECT b.name FROM Table_B b)
查詢的結果集為空
原因:
如果在not in子查詢中有null值的時候,則不會返回資料。
如果not in子查詢中有null可以用如下sql
SELECT a.* FROM Table_A a WHERE a.name NOT IN (SELECT b.name FROM Table_B b WHERE b.name IS NOT NULL)
有not in 還要注意以下三點:
1.如果null參與算術運算,則該算術表示式的值為null。(例如:+,-,*,/ 加減乘除)
2.如果null參與比較運算,則結果可視為false。(例如:>=,<=,<> 大於,小於,不等於)
3.如果null參與聚集運算,則聚集函式都置為null。除count(*)之外。