Bootstrap

mysql not in 查询不出数据

表结构如下

表Table_A:
idname
1张三
2赵四
3王五
4徐六
表Table_B:
idname
1null
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(*)之外。

;