婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL如何使用union all獲得并集排序

MySQL如何使用union all獲得并集排序

熱門標簽:云南大數據外呼系統 怎么更改高德地圖標注 博樂電銷機器人 上海市三維地圖標注 電話機器人是電腦呼號嗎 南寧外呼系統招商 400電話到哪辦理優惠 機器人打電銷電話 鄭州網絡外呼系統價錢

項目中有時候因為某些不可逆轉的原因使得表中存儲的數據難以滿足在頁面中的展示要求。之前的項目上有文章內容的展示功能,文章分為三個狀態待發布、已發布、已下線。

他們在數據表中判斷狀態的字段(PROMOTE_STATUS)值分別為0、1、2。一開始的需求是文章只展示待發布和已發布,已發布排在待發布前面,并且兩種狀態下在根據自己的情況去排序。這樣的實現比較簡單,如下的order by語句就可以實現了。

order by PROMOTE_STATUS desc ,SEQUENCE_ID desc......

結果移交測試之后,產品覺得這里可以優化下,文章的展示要改為已發布、待發布、已下線(沒錯,已下線它突然就要了,而且很傲嬌的排在了最后)。那怎么辦嘞?改表將已發布、待發布、已下線的PROMOTE_STATUS對應值改為2、1、0肯定是行不通的,因為這個表其他的同事也用了。若是改了這里的對應關系。其他同事的代碼的判斷邏輯都得動。

所以就想到了union all,然后還需要實現文章在三個狀態下的各自展示順序。所以,最終的思路就是將PROMOTE_STATUS分別為1、0、2時的數據查出來,然后根據每種狀態下的情況進行order by排序,最后將各個子集union all之后返回給頁面展示。

最終的sql語句如下:

select
    PROMOTE_ID,
    SEQUENCE_ID,
    PROMOTE_STATUS,
    PROMOTE_TITLE,
    RELEASE_DATE
    FROM (
      (SELECT
        PROMOTE_ID,
        SEQUENCE_ID,
        PROMOTE_STATUS,
        PROMOTE_TITLE,
        RELEASE_DATE 
       FROM SYS_TEXT_PROMOTE
       WHERE
         ENABLED_FLAG = '1'
         AND PROMOTE_STATUS=1
         AND SORT_ID = #{params.sortId}
         order by SEQUENCE_ID DESC,LAST_UPDATE_DATE DESC) a)
union all
select
    PROMOTE_ID,
    SEQUENCE_ID,
    PROMOTE_STATUS,
    PROMOTE_TITLE,
    RELEASE_DATE
    FROM (
      (SELECT
        PROMOTE_ID,
        SEQUENCE_ID,
        PROMOTE_STATUS,
        PROMOTE_TITLE,
        RELEASE_DATE 
       FROM SYS_TEXT_PROMOTE
       WHERE
        ENABLED_FLAG = '1'
        AND PROMOTE_STATUS=2
        AND SORT_ID = #{params.sortId}
        order by RELEASE_DATE DESC,LAST_UPDATE_DATE DESC) b)
union all
select
    PROMOTE_ID,
    SEQUENCE_ID,
    PROMOTE_STATUS,
    PROMOTE_TITLE,
    RELEASE_DATE
    FROM (
      (SELECT
        PROMOTE_ID,
        SEQUENCE_ID,
        PROMOTE_STATUS,
        PROMOTE_TITLE,
        RELEASE_DATE 
       FROM SYS_TEXT_PROMOTE
        WHERE
        ENABLED_FLAG = '1'
        AND PROMOTE_STATUS=0
        AND SORT_ID = #{params.sortId}
        order by RELEASE_DATE DESC,LAST_UPDATE_DATE DESC) c)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • MySQL union 語法代碼示例分析
  • mySQL UNION運算符的默認規則研究
  • MySQL中UNION與UNION ALL的基本使用方法
  • 淺析mysql union和union all
  • mysql如何將多行數據合并成一行
  • MYSQL使用Union將兩張表的數據合并顯示

標簽:定西 秦皇島 杭州 益陽 寧夏 恩施 白銀 澳門

巨人網絡通訊聲明:本文標題《MySQL如何使用union all獲得并集排序》,本文關鍵詞  MySQL,如何,使用,union,all,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL如何使用union all獲得并集排序》相關的同類信息!
  • 本頁收集關于MySQL如何使用union all獲得并集排序的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 华安县| 花莲市| 灵山县| 文水县| 阳西县| 门源| 双峰县| 淮滨县| 尚义县| 衡阳县| 余江县| 闽侯县| 泽州县| 郯城县| 壤塘县| 诏安县| 邢台县| 德安县| 濮阳县| 黎川县| 阳山县| 朝阳区| 璧山县| 祁连县| 南江县| 丰原市| 故城县| 青州市| 海林市| 浏阳市| 日土县| 勐海县| 辰溪县| 庆元县| 花垣县| 德钦县| 治多县| 宾川县| 仲巴县| 枣庄市| 达孜县|