当前位置:   article > 正文

SQL语句in 和 not in 使用注意事项(MySQL)_mysql 查询语句 in和not in 一起用 导致not in条件失效

mysql 查询语句 in和not in 一起用 导致not in条件失效

问题详情:

现有如下两张表usertable和usergrade

SQL> select * from usertable;

USERID USERNAME

SQL> select * from usergrade;

USERID USERNAME GRADE

1

user1

1

user1

90

2

null

2

null

80

3

user3

7

user7

80

4

null

8

user8

90

5

user5

6

user6

语句一:select count(*) from usergrade where username in (select username from usertable);

语句二: select count(*) from usergrade where username not in (select username from usertable);

语句大体意思为找出两张表username的差别

当执行语句一时

预期结果:1

实际结果:1

当执行语句二时

预期结果:2

实际结果:0


分析:

语句一执行时,null不计入考虑范围内,结果符合预期。

语句二执行时,按照先前思路,null也不计入考虑范围内,结果不符合预期。

网上查询not in使用注意事项,然后发现问题所在。

not in 子查询不能存在null的字段,否则会导致条件失效,sql语句查不出所需数据


 总结:

当查询语句有 in 条件时,应注意子查询字段为空的数据不计入查询范围。

当查询语句有not in条件时,应注意子查询字段不能有空数据,否则会产生查询失效。

因此,当出现not in 查询条件时,子查询应当添加不为空筛选条件。

where tablename.column is not null

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/657576
推荐阅读
相关标签
  

闽ICP备14008679号