最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySL實(shí)現(xiàn)如等級(jí)成色等特殊順序的排序詳解

 更新時(shí)間:2023年05月25日 14:54:46   作者:北橋蘇  
這篇文章主要為大家介紹了MySL實(shí)現(xiàn)如等級(jí)成色等特殊順序的排序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言:

在涉及商品類的項(xiàng)目時(shí),為了給同一類商品定位,往往會(huì)分等級(jí)或者成色。而等級(jí)/成色有時(shí)是用類似A,A+,A+1,K,L1,L2等英文與數(shù)字的組合進(jìn)行表述。既然是等級(jí),自然就會(huì)區(qū)分高等級(jí),低等級(jí)。有高有低,又給商品定了等級(jí),所以到了商品列表展示,等級(jí)排序自然少不了。     

項(xiàng)目在開始做的時(shí)候關(guān)于商品等級(jí)字段是直接存儲(chǔ)的上面的字母數(shù)字,也就是A,A+1之類的。所以在需要以等級(jí)排序的時(shí)候,以英文字母的方式升序倒序就出現(xiàn)了問題,比如大部分等級(jí)中,S是最高級(jí),而英文倒序S排在了后面。 

沖突:

直接以英文字母排序很顯然是不行的,于是首先想到的是數(shù)據(jù)表的等級(jí)字段改為int,存入數(shù)字。在配置里或者單獨(dú)建一張表與對(duì)應(yīng)數(shù)字關(guān)聯(lián)一個(gè)等級(jí)。類似K對(duì)應(yīng)1之類的,需要升序降序就對(duì)數(shù)字排序,這樣就解決了S排序問題。但是,現(xiàn)實(shí)的是商品表的數(shù)據(jù)量極大,如果要給原來的等級(jí)做關(guān)聯(lián),就要小心的寫SQL替換或者手動(dòng)一個(gè)一個(gè)改。不知道有沒有在不需要修改表的情況下解決那種特殊字符排序的方法,后來還真想到了一個(gè)方法。 

解決方法:

通過使用MySQL的find_in_set函數(shù),通過自定義的順序進(jìn)行排序,所以后續(xù)將某個(gè)等級(jí)提前改動(dòng)都不會(huì)那么被動(dòng)了,如下示例。

1. 可以先定義升序,倒序的排列

"grade_desc" => ["S","A+","A1","A2","B+1","B+2","B1","B2","C+1","C+2","C1","C2","D+1","D+2","D1","D2","D3","E+1","E+2","E1","E2","F","G+","G1","G2","H+","H1","H2","I+","I1","I2","J+","J","K+","K"]"grade_asc" => ["K","K+","J","J+","I2","I1","I+","H2","H1","H+","G2","G1","G+","F","E2","E1","E+2","E+1","D3","D2","D1","D+2","D+1","C2","C1","C+2","C+1","B2","B1","B+2","B+1","A2","A1","A+","S"]

2. 查詢示例

3. ThinkPHP5的使用方式

3.1. 升序

$list = GoodsItem::where('delete_time','=',0)
            ->field('id,grade')
            ->orderRaw("find_in_set(grade,'K,K+,J,J+,I2,I1,I+,H2,H1,H+,G2,G1,G+,F,E2,E1,E+2,E+1,D3,D2,D1,D+2,D+1,C2,C1,C+2,C+1,B2,B1,B+2,B+1,A2,A1,A+,S')")
            ->select();
return $list->toArray();

3.2. 倒序

$list = GoodsItem::where('delete_time','=',0)
            ->field('id,grade')
            ->orderRaw("find_in_set(grade,'S,A+,A1,A2,B+1,B+2,B1,B2,C+1,C+2,C1,C2,D+1,D+2,D1,D2,D3,E+1,E+2,E1,E2,F,G+,G1,G2,H+,H1,H2,I+,I1,I2,J+,J,K+,K')")
            ->select();
        return $list->toArray();

3.3.效果

4. find_in_set函數(shù)

這個(gè)函數(shù)可以放在where中使用,查詢字段是否存在某個(gè)范圍內(nèi),有點(diǎn)像IN,但還是有區(qū)別,具體的后期補(bǔ)上。

以上就是MySQL實(shí)現(xiàn)如等級(jí)成色等特殊順序的排序詳解的詳細(xì)內(nèi)容,更多關(guān)于MySQL特殊順序排序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL查詢語句簡單操作示例

    MySQL查詢語句簡單操作示例

    這篇文章主要介紹了MySQL查詢語句簡單操作,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫、數(shù)據(jù)表創(chuàng)建、數(shù)據(jù)插入、數(shù)據(jù)查詢等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • navicat創(chuàng)建MySql定時(shí)任務(wù)的方法詳解

    navicat創(chuàng)建MySql定時(shí)任務(wù)的方法詳解

    這篇文章主要介紹了navicat創(chuàng)建MySql定時(shí)任務(wù)的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 新手如何安裝Mysql(親測(cè)有效)

    新手如何安裝Mysql(親測(cè)有效)

    這篇文章主要介紹了新手如何安裝Mysql(親測(cè)有效),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 一次MySQL慢查詢導(dǎo)致的故障

    一次MySQL慢查詢導(dǎo)致的故障

    這篇文章主要介紹了如何對(duì)MySQL慢查詢導(dǎo)致的故障進(jìn)行處理,慢查詢是我們?cè)趍ysql中經(jīng)常需要使用到的一個(gè)很方便的功能,慢查詢對(duì)于跟蹤有問題的查詢很有用,需要的朋友可以參考下
    2015-08-08
  • MySQL中深分頁LIMIT 100000的優(yōu)化方案

    MySQL中深分頁LIMIT 100000的優(yōu)化方案

    在實(shí)際項(xiàng)目中,分頁查詢是最常見的 SQL 場景之一,但隨著業(yè)務(wù)數(shù)據(jù)量不斷增長,我們經(jīng)常會(huì)遇到深分頁的請(qǐng)求,本文將帶大家理解 MySQL 深分頁的本質(zhì)以及掌握高性能替代方案,感興趣的可以了解下
    2025-11-11
  • mysql下mysqladmin日常管理命令總結(jié)(必看篇)

    mysql下mysqladmin日常管理命令總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄猰ysql下mysqladmin日常管理命令總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL去除字段里數(shù)字的示例代碼

    MySQL去除字段里數(shù)字的示例代碼

    本文主要介紹了MySQL去除字段里數(shù)字的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • CentOS下RPM方式安裝MySQL5.6教程

    CentOS下RPM方式安裝MySQL5.6教程

    這篇文章主要為大家詳細(xì)介紹了CentOS下RPM方式安裝MySQL5.6教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Mysql表批量添加字段一些示例代碼

    Mysql表批量添加字段一些示例代碼

    這篇文章主要給大家介紹了關(guān)于Mysql表批量添加字段的相關(guān)資料,在MySQL中可以使用ALTER TABLE語句來批量添加字段,下面這篇文章通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • MYSQL如何查詢成績?yōu)榍?名的學(xué)生

    MYSQL如何查詢成績?yōu)榍?名的學(xué)生

    這篇文章主要介紹了MYSQL如何查詢成績?yōu)榍?名的學(xué)生問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論

牟定县| 汝阳县| 宁陕县| 武汉市| 贞丰县| 东光县| 乐东| 故城县| 二手房| 牙克石市| 蕉岭县| 微山县| 玉环县| 武川县| 中卫市| 墨脱县| 眉山市| 万州区| 利辛县| 无为县| 延川县| 福海县| 长白| 龙川县| 保定市| 会东县| 双城市| 志丹县| 扎赉特旗| 德江县| 巴彦县| 罗江县| 阳城县| 安丘市| 宜川县| 泊头市| 灌南县| 醴陵市| 龙陵县| 峨边| 奉化市|