MySQL 中 FIELD() 自定義排序示例詳解
MySQL 中 FIELD() 自定義排序
在 MySQL 中,你可以使用 ORDER BY FIELD() 來(lái)自定義排序順序。這個(gè)函數(shù)允許你指定字段的自定義排序順序,而不是默認(rèn)的升序或降序排序。以下是一個(gè)簡(jiǎn)單的例子:
假設(shè)你有一個(gè)表格叫做 products,其中有一個(gè)字段叫做 category,你想按照特定的類別順序進(jìn)行排序,比如 'Electronics', 'Clothing', 'Books',你可以這樣做:
SELECT * FROM products ORDER BY FIELD(category, 'Electronics', 'Clothing', 'Books');
這個(gè)查詢會(huì)按照 'Electronics'、'Clothing' 和 'Books' 的順序來(lái)排序 category 字段。
你也可以結(jié)合其他的排序條件,比如:
SELECT * FROM products ORDER BY FIELD(category, 'Electronics', 'Clothing', 'Books'), price ASC;
補(bǔ)充:MySQL中函數(shù)field()的用法
MySQL中的field()函數(shù),可以用來(lái)對(duì)SQL中查詢結(jié)果集進(jìn)行指定順序排序。
函數(shù)使用格式如下:
order by (str,str1,str2,str3,str4……),str與str1,str2,str3,str4比較,其中str指的是字段名字,
意為:字段str按照字符串str1,str2,str3,str4的順序返回查詢到的結(jié)果集。如果表中str字段值不存在于str1,str2,str3,str4中的記錄,放在結(jié)果集最前面返回。
例:
表數(shù)據(jù)如下:
root@localhost|iris>select * from ta; +----+--------+------+-------+ | id | name | age | class | +----+--------+------+-------+ | 1 | iris | 11 | a1 | | 2 | iris | 22 | a2 | | 3 | seiki | 33 | a3 | | 4 | seiki | 44 | a4 | | 5 | xuding | 55 | a5 | | 6 | xut | 66 | a6 | | 7 | iris | 12 | a2 | | 8 | iris | 24 | a4 | | 9 | seiki | 36 | a6 | | 10 | seiki | 48 | a8 | | 11 | xuding | 50 | a0 | | 12 | xut | 77 | a7 | +----+--------+------+-------+ 12 rows in set (0.00 sec)
按照'seiki','iris','xut'來(lái)排序,結(jié)果如下:
root@localhost|iris>select * from ta order by field(name,'seiki','iris','xut'); +----+--------+------+-------+ | id | name | age | class | +----+--------+------+-------+#不在str1,str2,str3中的內(nèi)容,放在最前面返回,str值相同按照主鍵的順序 | 5 | xuding | 55 | a5 | | 11 | xuding | 50 | a0 | | 3 | seiki | 33 | a3 | | 4 | seiki | 44 | a4 | | 9 | seiki | 36 | a6 | | 10 | seiki | 48 | a8 | | 1 | iris | 11 | a1 | | 2 | iris | 22 | a2 | | 7 | iris | 12 | a2 | | 8 | iris | 24 | a4 | | 6 | xut | 66 | a6 | | 12 | xut | 77 | a7 | +----+--------+------+-------+ 12 rows in set (0.00 sec)
按照'seiki','iris'來(lái)排序,結(jié)果如下:
root@localhost|iris>select * from ta order by field(name,'seiki','iris'); +----+--------+------+-------+ | id | name | age | class | +----+--------+------+-------+#不在str1,str2,str3中的內(nèi)容,放在最前面返回;str值相同按主鍵順序排列 | 5 | xuding | 55 | a5 | | 6 | xut | 66 | a6 | | 11 | xuding | 50 | a0 | | 12 | xut | 77 | a7 | | 3 | seiki | 33 | a3 | | 4 | seiki | 44 | a4 | | 9 | seiki | 36 | a6 | | 10 | seiki | 48 | a8 | | 1 | iris | 11 | a1 | | 2 | iris | 22 | a2 | | 7 | iris | 12 | a2 | | 8 | iris | 24 | a4 | +----+--------+------+-------+ 12 rows in set (0.00 sec)
按照'seiki','iris' desc 來(lái)排序,結(jié)果如下:
root@localhost|iris>select * from ta order by field(name,'seiki','iris') desc; +----+--------+------+-------+ | id | name | age | class | +----+--------+------+-------+ | 1 | iris | 11 | a1 | | 2 | iris | 22 | a2 | | 7 | iris | 12 | a2 | | 8 | iris | 24 | a4 | | 3 | seiki | 33 | a3 | | 4 | seiki | 44 | a4 | | 9 | seiki | 36 | a6 | | 10 | seiki | 48 | a8 |#倒序時(shí),按照str3,str2,str1的順序逆向排序, | 5 | xuding | 55 | a5 |#不在str1,str2,str3中的記錄放到最后;str值相同按主鍵順序排列 | 6 | xut | 66 | a6 | | 11 | xuding | 50 | a0 | | 12 | xut | 77 | a7 | +----+--------+------+-------+
這個(gè)查詢會(huì)先按照指定的類別順序排序,然后在每個(gè)類別內(nèi)按照價(jià)格升序排序。
到此這篇關(guān)于MySQL 中 FIELD() 自定義排序的文章就介紹到這了,更多相關(guān)MySQL 自定義排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問(wèn)題
本文給大家介紹的是如何解決win平臺(tái)下開發(fā)的項(xiàng)目移植到Linux平臺(tái)后,向MySQL插入數(shù)據(jù)時(shí)中文出現(xiàn)亂碼的問(wèn)題,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2018-04-04
MySQL中SQL查詢常見調(diào)優(yōu)方案對(duì)比與實(shí)踐
文章瀏覽閱讀429次,點(diǎn)贊3次,收藏2次。本文從索引優(yōu)化、查詢重寫、分庫(kù)分表、緩存方案四個(gè)角度,對(duì)SQL調(diào)優(yōu)進(jìn)行對(duì)比分析,并結(jié)合真實(shí)生產(chǎn)環(huán)境案例驗(yàn)證了各方案的應(yīng)用效果,為后端開發(fā)者提供實(shí)用的最佳實(shí)踐指導(dǎo)。2025-07-07
MySQL下200GB大表備份的操作(利用傳輸表空間解決停服發(fā)版表備份問(wèn)題)
這篇文章主要介紹了MySQL下200GB大表備份的操作(利用傳輸表空間解決停服發(fā)版表備份問(wèn)題),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2025-04-04
MySQL啟動(dòng)報(bào)錯(cuò)提示發(fā)生系統(tǒng)錯(cuò)誤5,拒絕訪問(wèn)的原因和解決方法
使用命令net start mysql啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)時(shí)候,出現(xiàn)如下錯(cuò)誤提示發(fā)生系統(tǒng)錯(cuò)誤5,拒絕訪問(wèn),所以本文給大家介紹了MySQL啟動(dòng)報(bào)錯(cuò)提示發(fā)生系統(tǒng)錯(cuò)誤5,拒絕訪問(wèn)的原因和解決方法,需要的朋友可以參考下2024-01-01
一文帶你了解如何用MySQL通配符實(shí)現(xiàn)過(guò)濾功能
本文章將介紹什么是通配符、如何使用通配符以及怎樣使用LIKE操作符進(jìn)行通配搜索,以便對(duì)數(shù)據(jù)進(jìn)行復(fù)雜過(guò)濾,感興趣的小伙伴跟著小編一起來(lái)學(xué)習(xí)吧2023-07-07

