MySQL 查询in操作,查询结果按in集合顺序显示 复制代码 代码如下: select * from test where id in(3,1,5) order by find_in_set(id,"3,1,5"); select * from test where id in(3,1,5) order by substring_index("3,1,2",id,1);
偶尔看到的。。。或许有人会注意过,但我以前真不知道 SQL: select * from table where id IN (3,6,9,1,2,5,8,7);
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,可以见名知义。