真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL怎么使用unionall獲得并集排序

這篇文章將為大家詳細講解有關(guān)MySQL怎么使用union all獲得并集排序,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

按需求定制設(shè)計可以根據(jù)自己的需求進行定制,成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)構(gòu)思過程中功能建設(shè)理應(yīng)排到主要部位公司成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)的運用實際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實際意義

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

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

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

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

所以就想到了union all,然后還需要實現(xiàn)文章在三個狀態(tài)下的各自展示順序。所以,最終的思路就是將PROMOTE_STATUS分別為1、0、2時的數(shù)據(jù)查出來,然后根據(jù)每種狀態(tài)下的情況進行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)

關(guān)于“MySQL怎么使用union all獲得并集排序”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


本文標題:MySQL怎么使用unionall獲得并集排序
新聞來源:http://weahome.cn/article/ipdedh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部