mysql由于null导致查询异常
场景
使用not in查询不符合预期
mysql版本
10.1.9-MariaDB(对应mysql 5.6)
表数据
test1
id | f_a | f_b |
---|---|---|
1 | 1 | 1 |
2 | 2 | 2 |
3 | 3 |
问题
通过not in 查询不出来预期结果,比如下面语句把f_a>2的记录排除掉,预期是得到第1、2条记录,但是实际上查询结果是空
select
*
from
test1
where
f_b not in (
select
f_b
from
test1
where
f_a > 2
)
下面拆分子查询都是能查询指定结果的可以出结果的
SELECT
f_b
FROM
test1
WHERE
f_a > 2
select
*
from
test1
where
f_b in (1, 2)
原因
not in null查询异常,目前发现5.7.18没该问题
解决方案
添加not null 条件
select
*
from
test1
where
f_b not in (
select
f_b
from
test1
where
f_a > 2
and f_b is not null
)