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

mysql中order?by根據(jù)like查找關鍵字段設置權重排序的操作方法

 更新時間:2026年03月05日 09:16:49   作者:TTc_  
本文給大家介紹mysql中order?by根據(jù)like查找關鍵字段設置權重排序的方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

1.存在的問題,應該將普通號排在前面

2.造成問題的原因

下面的Java代碼中對YSXM做了拼接,sql是對KSID做的排序,比如數(shù)據(jù)庫中YSXM的名稱在普通號的前面的話,根據(jù)Java代碼那么人名就會在前面后面普通號就被拼在了后面。

List<JSONObject> thisWeek = apiService.getListByApi(3258, param).getData();
            Map<String, List<JSONObject>> resultMap = new HashMap<>();
            //拼接醫(yī)師內(nèi)容
            HashMap<String, JSONObject> weekMap = new HashMap<>();
            for (JSONObject week : thisWeek) {
                String key = week.getString("KSID") + "|" + week.getString("RQ") + "|" + week.getString("BC");
                JSONObject js = weekMap.get(key);
                if (StringUtils.isNotEmpty(js)) {
                    //存在排班文檔時
                    js.put("YSXM", js.getString("YSXM") +"、"+ week.getString("YSXM"));
                    js.put("YSDM", js.getString("YSDM") +"、"+ week.getString("YSDM"));
                    weekMap.put(key, js);
                }else {
                    //不存在時
                    weekMap.put(key, week);
                }
            }
sql:
SELECT MZGH_NYSPB.ID
     , MZGH_NYSPB.YSDM
     , MZGH_NYSPB.YSXM
     , MZGH_NYSPB.ZBDM
     , MZGH_NYSPB.KSID
     , MZGH_NYSPB.KSMC
     , MZGH_NYSPB.XQJ
     , MZGH_NYSPB.RQ
     , MZGH_NYSPB.BC
     , MZGH_NYSPB.YYXE
     , MZGH_NYSPB.YYRS
     , MZGH_NYSPB.ZT
     , MZGH_NYSPB.BZ
     , MZGH_NYSPB.XQ
FROM MZGH_NYSPB WHERE TO_DATE(MZGH_NYSPB.RQ, 'yyyy/MM/dd') >= TO_DATE('2026-3-1', 'yyyy/MM/dd')
  AND TO_DATE(MZGH_NYSPB.RQ, 'yyyy/MM/dd') <= TO_DATE('2026-3-7', 'yyyy/MM/dd')
  AND JGDM = 66 
 --and ysxm like  '田%'
 --and ID = '11482722026/03/06下午'
  ORDER BY KSID

如圖所示:

3.修改后的sql:

SELECT MZGH_NYSPB.ID
     , MZGH_NYSPB.YSDM
     , MZGH_NYSPB.YSXM
     , MZGH_NYSPB.ZBDM
     , MZGH_NYSPB.KSID
     , MZGH_NYSPB.KSMC
     , MZGH_NYSPB.XQJ
     , MZGH_NYSPB.RQ
     , MZGH_NYSPB.BC
     , MZGH_NYSPB.YYXE
     , MZGH_NYSPB.YYRS
     , MZGH_NYSPB.ZT
     , MZGH_NYSPB.BZ
     , MZGH_NYSPB.XQ
FROM MZGH_NYSPB WHERE TO_DATE(MZGH_NYSPB.RQ, 'yyyy/MM/dd') >= TO_DATE('2026-3-1', 'yyyy/MM/dd')
  AND TO_DATE(MZGH_NYSPB.RQ, 'yyyy/MM/dd') <= TO_DATE('2026-3-7', 'yyyy/MM/dd')
  AND JGDM = 66 
  ORDER BY KSID,
         -- 關鍵修改:讓普通號排在前面
         CASE 
           WHEN YSXM LIKE '普通號%' THEN 0  -- 普通號排在最前
           ELSE 1                            -- 其他排在后
         END,
         YSXM 

4.這段排序語句的含義解析:

CASE 
  WHEN YSXM LIKE '%普通號%' THEN 0  -- 普通號排在最前
  ELSE 1                            -- 其他排在后
END,
YSXM  -- 同類型內(nèi)按姓名排序

1. 第一層排序:CASE WHEN表達式

  • 目的:創(chuàng)建一個臨時排序權重
  • 邏輯
    • 如果 YSXM字段包含"普通號",返回權重值 0
    • 其他情況(如"田文君"等醫(yī)生姓名),返回權重值 1
  • 效果ORDER BY會先按這個權重值排序,0在前,1在后,所以"普通號"會排在前面

2. 第二層排序:YSXM字段

  • 目的:在權重值相同的情況下,進行二級排序
  • 為什么要加這個
    • 當權重值相同時(比如有多個"普通號"記錄,或多個非"普通號"記錄),需要確定這些記錄之間的順序
    • 比如:如果有兩個"普通號"記錄,它們的權重值都是0,那么按字母順序排序這兩個"普通號"記錄
    • 再比如:如果有"張三"和"李四"兩個醫(yī)生,它們的權重值都是1,那么按姓名排序這兩個醫(yī)生

3.實際排序效果示例

假設數(shù)據(jù)如下:

ID  | YSXM
----|---------
1   | 普通號
2   | 田文君
3   | 普通號
4   | 李醫(yī)生
5   | 王醫(yī)生

排序過程

  • 先按權重值排序(普通號=0,其他=1):
    • 權重0:普通號、普通號
    • 權重1:田文君、李醫(yī)生、王醫(yī)生
  • 在權重相同的組內(nèi),再按YSXM字母順序排序:
    • 權重0組內(nèi)排序:普通號、普通號(兩者相同,按數(shù)據(jù)庫默認順序)
    • 權重1組內(nèi)排序:李醫(yī)生、田文君、王醫(yī)生(按拼音/字母順序)

最終排序結果

普通號
普通號
李醫(yī)生
田文君
王醫(yī)生

4.如果不需要二級排序,可以簡化

如果只需要保證"普通號"在前面,同一類型內(nèi)部的順序無所謂,可以去掉最后的YSXM

ORDER BY KSID,
         CASE 
           WHEN YSXM LIKE '%普通號%' THEN 0
           ELSE 1
         END

這樣會更快,但同一權重組內(nèi)的記錄順序可能不確定。

改完后展示就正常了

到此這篇關于mysql中order by根據(jù)like查找關鍵字段設置權重排序的操作方法的文章就介紹到這了,更多相關mysql order by權重排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL查詢緩存的小知識

    MySQL查詢緩存的小知識

    這篇文章主要介紹了MySQL查詢緩存的的相關資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • MySQL中COUNT函數(shù)的使用小結

    MySQL中COUNT函數(shù)的使用小結

    在MySQL的數(shù)據(jù)統(tǒng)計場景中,COUNT()函數(shù)是使用率極高的工具,無論是統(tǒng)計表中記錄總數(shù),還是按條件聚合計數(shù),它都能輕松勝任,下面就來詳細的介紹一下
    2025-12-12
  • mysql如何查看當前連接數(shù)

    mysql如何查看當前連接數(shù)

    這篇文章主要介紹了mysql如何查看當前連接數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • MySQL?FLOAT不準問題解析

    MySQL?FLOAT不準問題解析

    在數(shù)據(jù)庫處理中,使用FLOAT類型存儲浮點數(shù)時,由于二進制表示的限制,會導致精度損失,解決方法包括使用DOUBLE或DECIMAL類型來提高精度,或避免使用浮點數(shù)進行精確計算,感興趣的可以了解一下
    2024-09-09
  • MySQL命令行下18個常用命令

    MySQL命令行下18個常用命令

    在日常的網(wǎng)站維護和MYSQL數(shù)據(jù)庫管理中,會用到非常多的MYSQL命令,下面給大家介紹18個管理MYSQL數(shù)據(jù)庫時最常使用的命令
    2018-03-03
  • MySQL查看事務與鎖的操作示例小結

    MySQL查看事務與鎖的操作示例小結

    本文介紹了MySQL中事務和鎖的基本概念以及不同隔離級別下的鎖類型,并通過實際測試驗證了這些鎖的使用情況,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • MySQL查看每個分區(qū)的數(shù)據(jù)量的查詢方法

    MySQL查看每個分區(qū)的數(shù)據(jù)量的查詢方法

    在MySQL中,分區(qū)表是一種將數(shù)據(jù)分割成更小、更易管理的部分的方法,通過分區(qū),可以顯著提高查詢性能和數(shù)據(jù)管理效率,在實際應用中,了解每個分區(qū)中的數(shù)據(jù)量有助于優(yōu)化和監(jiān)控數(shù)據(jù)庫性能,本文將介紹如何查看MySQL中每個分區(qū)的數(shù)據(jù)量,需要的朋友可以參考下
    2025-07-07
  • MySQL中的SHOW FULL PROCESSLIST命令實現(xiàn)

    MySQL中的SHOW FULL PROCESSLIST命令實現(xiàn)

    SHOW FULL PROCESSLIST命令是MySQL中一個非常有用的工具,可以幫助我們理解和監(jiān)控MySQL服務器的狀態(tài),本文主要介紹了MySQL中的SHOW FULL PROCESSLIST命令,感興趣的可以了解一下
    2023-11-11
  • MySQL 一次執(zhí)行多條語句的實現(xiàn)及常見問題

    MySQL 一次執(zhí)行多條語句的實現(xiàn)及常見問題

    通常情況MySQL出于安全考慮不允許一次執(zhí)行多條語句(但也不報錯,很讓人郁悶)。
    2009-08-08
  • mysql -參數(shù)thread_cache_size優(yōu)化方法 小結

    mysql -參數(shù)thread_cache_size優(yōu)化方法 小結

    以下是某門戶網(wǎng)站的mysql狀態(tài)實例及分析過程,絕對的第一手數(shù)據(jù)資料,很生動的體現(xiàn)了參數(shù)thread_cache_size優(yōu)化的效果及優(yōu)化該參數(shù)的必要性,希望對各位系統(tǒng)管理員能有幫助。
    2011-03-03

最新評論

侯马市| 安化县| 五华县| 静宁县| 清水河县| 云和县| 乡城县| 巩义市| 康平县| 甘德县| 门源| 蓬安县| 汪清县| 阿巴嘎旗| 乌什县| 上蔡县| 通化县| 和林格尔县| 盐津县| 巴彦淖尔市| 苍溪县| 高雄市| 襄樊市| 安义县| 孝昌县| 浙江省| 全南县| 定结县| 镇原县| 资兴市| 平阳县| 临安市| 翁牛特旗| 阳原县| 增城市| 任丘市| 长宁县| 宿州市| 白银市| 鸡西市| 裕民县|