mysql的in和not in的用法(特别注意not in结果集中不能有null)
2017-08-25 14:54
369 查看
注意:
1. not in的结果集中出现null则查询结果为null;
例如下面sql中,含有list中null值,无法正确查询结果;
in结果集有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)
1. not in的结果集中出现null则查询结果为null;
例如下面sql中,含有list中null值,无法正确查询结果;
SELECT COUNT(name) FROM CVE WHERE name NOT IN ('CVE-1999-0001', 'CVE-1999-0002', NULL);
in结果集有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)
相关文章推荐
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- 关于SQL中IN 和NOT IN的用法注意事项
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- not in 不能使用在子查询结果为null
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- exists ,not exists改写成in 和 not in 时,要注意null值的情况,会影响结果
- Oracle Null 与 in, exists 的关系说明(not in 查不到结果)
- mysql的IF()、IFNULL()、WHEN CASE的用法
- MySQL 查询in操作,查询结果按in集合顺序显示
- Mysql的NULL的一个注意点
- mysql的in选择结果过,按照in里面的排序排序
- mysql中not in,in,exists,not exists原理和区别
- 安装好MySQL后,用SQL去修改root帐号的密码,结果不能登录了!
- mysql中explain用法和结果的含义
- MySQL去除查询结果重复值 distinct 的用法
- mysql中isnull,ifnull,nullif的用法