千家信息网

MySQL怎么使用union all获得并集排序

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关MySQL怎么使用union all获得并集排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目中有时候因为某些不可逆转的原因使得表中
千家信息网最后更新 2026年10月31日MySQL怎么使用union all获得并集排序

这篇文章将为大家详细讲解有关MySQL怎么使用union all获得并集排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

项目中有时候因为某些不可逆转的原因使得表中存储的数据难以满足在页面中的展示要求。之前的项目上有文章内容的展示功能,文章分为三个状态待发布、已发布、已下线。

他们在数据表中判断状态的字段(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 allselect    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 allselect    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 all获得并集排序"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

文章 状态 排序 下线 数据 篇文章 三个 内容 同事 情况 更多 语句 页面 项目 别为 不错 实用 不可逆转 产品 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 智能科技公司是互联网公司吗 互联网扶贫科技 为想互联网科技 互联网科技公司官网 狮子座互联网科技有限公司 善班互联网科技有限公司 苏州大垚互联网科技 左右互联网络科技 富国互联网科技创新基金 互联网科技公司需要的职位 温州喔噻互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 开一家科技互联网公司需要多少钱 互联网金融科技展 互联网行业科技股 互联网科技如何创业 普陀区互联网教育科技管理办法 杭州融税互联网科技有限公司 互联网科技创新方面的资料 百单网互联网科技有限公司 互联网是第几次科技革命的成果 浩特互联网科技 互联网科技缩写 赫美联合互联网科技 哈尔滨秒房互联网科技有限公司 福仕德教育科技互联网 安徽零酒互联网科技有限公司 黑龙江互联网科技公司 上海旺乐尼互联网科技有限公司
0