码迷,mamicode.com
首页 > 数据库 > 详细

MySQL中NOT IN语句对NULL值的处理

时间:2016-04-27 12:31:18      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

与使用in时不同:

在使用in 时:

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

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

二者结果相同;

在使用not in时:

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) 

MySQL中NOT IN语句对NULL值的处理

标签:

原文地址:http://www.cnblogs.com/w10234/p/5437976.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!