程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL查詢in操作 查詢成果按in聚集次序顯示

MySQL查詢in操作 查詢成果按in聚集次序顯示

編輯:MySQL綜合教程

MySQL查詢in操作 查詢成果按in聚集次序顯示。本站提示廣大學習愛好者:(MySQL查詢in操作 查詢成果按in聚集次序顯示)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL查詢in操作 查詢成果按in聚集次序顯示正文


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);

如許的情形掏出來後,其實,id照樣按1,2,3,4,5,6,7,8,9,排序的,但假如我們真要按IN外面的次序排序怎樣辦?SQL能不克不及完成?能否須要取回來後再foreach一下?其實mysql就有這個辦法

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);

出來的次序就是指定的次序了。。。。這個,之前還真的歷來沒用過,偶然看到,所以就記載了一下。一是做個筆記,二是願望可以給更多的人看到

MySQL中NOT 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)
趁便提一下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,可以見名知義。

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)這兩條記錄,即找出其它記錄
error: select * from info where episode_id=100034 and id not in(3,4) and info_type_id not in (8);
error result:
id, info_type_id, programme_id, episode_id
100001, 4, 382, 100034
100002, 4, 382, 100034
correct: select * from info where episode_id=100034 and (id<>3 or info_type_id<>8) and (id<>4 or info_type_id<>8);
correct result:
id, info_type_id, programme_id, episode_id
3, 4, 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 or info_type_id<>8消除失落id=3 && info_type_id=8這條記錄,當表中主鍵多於一個時,不克不及簡單地應用key1 NOT IN (……) AND key2 NOT IN (……) ..
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved