1. 程式人生 > >mysql not in 查詢不出資料

mysql not in 查詢不出資料

表結構如下

表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(*)之外。