日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL查詢結(jié)果按某值排序

MySQL查詢結(jié)果如何排序呢?這是很多人都提過的問題,下面就教您如何對(duì)MySQL查詢結(jié)果按某值排序,如果您感興趣的話,不妨一看。

創(chuàng)新互聯(lián)建站專注于興和網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供興和營銷型網(wǎng)站建設(shè),興和網(wǎng)站制作、興和網(wǎng)頁設(shè)計(jì)、興和網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造興和網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供興和網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

之前有一個(gè)功能修改,要求MySQL查詢結(jié)果中:

id name * * *

1 lucy ...

3 lucy ...

2 lily ...

4 lucy ...

名字為lucy的優(yōu)先排在前面,百思不得其解,可能有人會(huì)說簡單 union嘛 或者弄個(gè)臨時(shí)表什么的,其實(shí)我也想過,但是本身SQL邏輯就很多了(上面只是簡例),再union的話或者臨時(shí)表可能繞很大的彎路,后來看到一篇文章嘗試著加入order by find_in_set(name,'lucy') ,結(jié)果 得到的結(jié)果為lucy全部在下面,隨即我改為order by find_in_set(name,'lucy') desc 實(shí)現(xiàn)結(jié)果為

id name * * *

1 lucy ...

3 lucy ...

4 lucy ...

2 lily ...

基本實(shí)現(xiàn),可是又有點(diǎn)不確定的心情,查mysql文檔發(fā)現(xiàn)find_in_set語法

 
 
 
  1. FIND_IN_SET(str,strlist)   
  2.  

假如字符串str 在由N 子鏈組成的字符串列數(shù)據(jù)表strlist 中, 則返回值的范圍在 1 到 N 之間 。一個(gè)字符串列數(shù)據(jù)表就是一個(gè)由一些被『,』符號(hào)分開的自鏈組成的字符串。如果***個(gè)參數(shù)是一個(gè)常數(shù)字符串,而第二個(gè)是type SET列,則   FIND_IN_SET() 函數(shù)被優(yōu)化,使用比特計(jì)算。如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個(gè)參數(shù)為NULL,則返回值為 NULL。 這個(gè)函數(shù)在***個(gè)參數(shù)包含一個(gè)逗號(hào)(『,』)時(shí)將無法正常運(yùn)行

 
 
 
  1. mysql> SELECT FIND_IN_SET('b','a,b,c,d');  
  2.  
  3.         -> 2  
  4.  

看了這個(gè)我估計(jì)結(jié)果為什么要加desc 了 find_in_set返回的值是,當(dāng)存在lucy的時(shí)候 返回他的位置,沒有的時(shí)候?yàn)?,空的時(shí)候null,所以排序?yàn)?,1,1,0,如果加在列上就為

id name FIND_IN_SET * *

1 lucy 1 ...

3 lucy 1 ...

2 lily 0 ...

4 lucy 1...

表結(jié)構(gòu)如下:

 
 
 
  1. mysql> select * from test;  
  2. +----+-------+  
  3. | id | name   |  
  4. +----+-------+  
  5. |   1 | test1 |  
  6. |   2 | test2 |  
  7. |   3 | test3 |  
  8. |   4 | test4 |  
  9. |   5 | test5 |  
  10. +----+-------+  

執(zhí)行以下SQL:

 
 
 
  1. mysql> select * from test where id in(3,1,5);  
  2. +----+-------+  
  3. | id | name   |  
  4. +----+-------+  
  5. |   1 | test1 |  
  6. |   3 | test3 |  
  7. |   5 | test5 |  
  8. +----+-------+  
  9. 3 rows in set (0.00 sec)  

這個(gè)select在mysql中得結(jié)果會(huì)自動(dòng)按照id升序排列,
但是我想執(zhí)行"select * from test where id in(3,1,5);"的結(jié)果按照in中得條件排序,即:3,1,5,想得到的結(jié)果如下:
id name
3 test3
1 test1
5 test5

方法如下:

 
 
 
  1. select * from test where id in(3,1,5) order by find_in_set(id,'3,1,5');  
  2. select * from test where id in(3,1,5) order by substring_index('3,1,2',id,1);  

兩者均可

【編輯推薦】

使用函數(shù)實(shí)現(xiàn)MySQL查詢行號(hào)

MySQL查詢中的非空問題

MySQL日期函數(shù)和時(shí)間函數(shù)

兩種常用MySql查詢時(shí)間段的方法

深度解析MySQL查詢緩存機(jī)制


網(wǎng)站名稱:MySQL查詢結(jié)果按某值排序
鏈接地址:http://m.5511xx.com/article/cdgiojg.html