您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页mysql的in和not in的用法(特别注意not in结果集中不能有null)

mysql的in和not in的用法(特别注意not in结果集中不能有null)

来源:爱玩科技网

注意:
1. not in的结果集中出现null则查询结果为null;
例如下面sql中,含有list中null值,无法正确查询结果;

SELECT COUNT(name) FROM CVE WHERE name NOT IN ('CVE-1999-0001', 'CVE-1999-0002', NULL);

=====================案例==========================

mysql> SELECT COUNT(name) FROM CVE WHERE name NOT IN (‘CVE-1999-0001’, ‘CVE-1999-0002’);

+————-+

| count(name) |

+————-+

| 17629 |

+————-+

1 row in set (0.02 sec)

mysql> SELECT COUNT(name) FROM CVE WHERE name NOT IN (‘CVE-1999-0001’, ‘CVE-1999-0002’, NULL);

+————-+

| count(name) |

+————-+

| 0 |

+————-+

1 row in set (0.01 sec)

当在子查询中出现NULL的时候,结果就一定是0了。查了一下手册,确实有这样的说法。所以最后实际采用了这样的查询:

SELECT COUNT(DISTINCT name)

FROM CVE

WHERE name NOT IN (SELECT cveID FROM cve_sig WHERE cveID IS NOT NULL)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务