MySQL怎么使用union all获得并集排序
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章将为大家详细讲解有关MySQL怎么使用union all获得并集排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目中有时候因为某些不可逆转的原因使得表中
千家信息网最后更新 2025年02月05日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安全错误
数据库的锁怎样保障安全
php多进程更新数据库数据
服务器托管计费
网络技术设计公司
社保办理网络技术应用
江苏北斗时间服务器云主机
数据库安全性控制的概念
如何连接格力服务器控制空调
软件开发大赛评分
数据库自己记录的日志
信息网络安全审查
云原生对服务器的要求
数据库 res选项
成都普法网络技术
四川出口外贸软件开发
网络安全体系原则
软件开发中间件构成
软件开发治理
服务器一块硬盘
参加网络安全宣传周活动主题
互联网摩根智能科技
放肆网络技术
数据库就业工资如何
网络安全课题申报
网络技术三网融合问题
华为终端软件开发岗位怎么样
qq绑亲密关系显示服务器错误
海盗网络安全问题
贵州品质软件开发
网络安全的方向
视频云存储管理服务器实现