溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么對(duì)MySQL查詢(xún)結(jié)果進(jìn)行排序

發(fā)布時(shí)間:2021-07-24 16:39:33 來(lái)源:億速云 閱讀:234 作者:Leah 欄目:數(shù)據(jù)庫(kù)

怎么對(duì)MySQL查詢(xún)結(jié)果進(jìn)行排序,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

  MySQL查詢(xún)結(jié)果如何排序

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

  idname***

  1lucy...

  3lucy...

  2lily...

  4lucy...

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

  idname***

  1lucy...

  3lucy...

  4lucy...

  2lily...

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

  MySQL查詢(xún)結(jié)果如何排序

  FIND_IN_SET(str,strlist)

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

  mysql>SELECTFIND_IN_SET('b','a,b,c,d');->2

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

  idnameFIND_IN_SET**

  1lucy1...

  3lucy1...

  2lily0...

  4lucy1...

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

  mysql>select*fromtest;+----+-------+|id|name|+----+-------+|1|test1||2|test2||3|test3||4|test4||5|test5|+----+-------+

  執(zhí)行以下SQL:

  mysql>select*fromtestwhereidin(3,1,5);+----+-------+|id|name|+----+-------+|1|test1||3|test3||5|test5|+----+-------+3rowsinset(0.00sec)

  這個(gè)select在mysql中得結(jié)果會(huì)自動(dòng)按照id升序排列,

  但是我想執(zhí)行"select*fromtestwhereidin(3,1,5);"的結(jié)果按照in中得條件排序,即:3,1,5,想得到的結(jié)果如下:

  idname

  3test3

  1test1

  5test5

  方法如下:

  select*fromtestwhereidin(3,1,5)orderbyfind_in_set(id,'3,1,5');select*fromtestwhereidin(3,1,5)orderbysubstring_index('3,1,2',id,1);

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI