MySQL 查詢in操作,查詢結(jié)果按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);
偶爾看到的。。。或許有人會(huì)注意過,但我以前真不知道
SQL: select * from table where id IN (3,6,9,1,2,5,8,7);
這樣的情況取出來后,其實(shí),id還是按1,2,3,4,5,6,7,8,9,排序的,但如果我們真要按IN里面的順序排序怎么辦?SQL能不能完成?是否需要取回來后再foreach一下?其實(shí)mysql就有這個(gè)方法
sql: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);
出來的順序就是指定的順序了。。。。這個(gè),以前還真的從來沒用過,偶爾看到,所以就記錄了一下。一是做個(gè)筆記,二是希望可以給更多的人看到
MySQL中NOT IN語(yǔ)句對(duì)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)
當(dāng)在子查詢中出現(xiàn)NULL的時(shí)候,結(jié)果就一定是0了。查了一下手冊(cè),確實(shí)有這樣的說法。所以最后實(shí)際采用了這樣的查詢:
SELECT COUNT(DISTINCT name)
FROM CVE
WHERE name NOT IN (SELECT cveID FROM cve_sig WHERE cveID IS NOT NULL)
順便提一下MySQL中正則表達(dá)式匹配的簡(jiǎn)單使用:
SELECT COUNT(alarmID)
FROM Alarm
WHERE (CVE NOT RLIKE '^CVE-[0-9]{4}-[0-9]{4}$' OR CVE IS NULL)
當(dāng)然,RLIKE也可以寫作REGEXP,我個(gè)人傾向于使用RLIKE,因?yàn)槠磳懡咏麹IKE,可以見名知義。
mysql - not in
table:info primary key(id, info_type_id)
id, info_type_id, programme_id, episode_id
3, 4, 382, 100034
3, 8, 382, 100034
4, 8, 382, 100034
6, 8, 382, 100034
7, 8, 382, 100034
8, 8, 382, 100034
9, 8, 382, 100034
10, 8, 382, 100034
11, 8, 382, 100034
12, 8, 382, 100034
13, 8, 382, 100034
100001, 4, 382, 100034
100002, 4, 382, 100034
排除(id=3 && info_type_id=8) and (id=4 && info_type_id=8)
主站蜘蛛池模板:
漯河市|
乃东县|
鄯善县|
凌海市|
庄河市|
平果县|
天峨县|
杭锦旗|
株洲市|
水富县|
会宁县|
叶城县|
阆中市|
太白县|
海门市|
呼玛县|
江陵县|
陈巴尔虎旗|
广汉市|
惠安县|
灌阳县|
晋中市|
石门县|
察哈|
曲沃县|
永嘉县|
汤阴县|
红原县|
区。|
大兴区|
平昌县|
虹口区|
昌图县|
两当县|
南乐县|
日土县|
田阳县|
若尔盖县|
合川市|
湛江市|
宁陕县|