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中正則表達式匹配的簡單使用: SELECT COUNT(alarmID) FROM Alarm WHERE (CVE NOT RLIKE '^CVE-[0-9]{4}-[0-9]{4}$' OR CVE IS NULL) 當然,RLIKE也可以寫作REGEXP,我個人傾向于使用RLIKE,因為拼寫接近LIKE,可以見名知義。