MySQL怎么使用union all获得并集排序
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关MySQL怎么使用union all获得并集排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目中有时候因为某些不可逆转的原因使得表中
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
网络安全的认识和发展
数据库客户端工具6
胖服务器架构
部队警惕网络安全风险
魔兽世界毁灭之刃服务器怎么样
微信软件开发合作协议
软件开发商标注册哪个类别
数据库已存在表分区
连接本地数据库出错08001
什么是代理服务器的地址和端口
在数据库用缩写DB 表示
域名与企业服务器
oppoA73t软件开发
鹰潭企业服务器哪家做的好
杭州个人软件开发
虎牙直播软件开发
国内服务器地址
网络安全检查有哪些
登陆数据库提示超时时间已到
网络安全法知识问答 判断题
大连最大贸易数据库
可变数据库喷码机
WPS能不能编辑数据库
ai智能语音视频服务器
关于网络安全的利与弊作文
观看网络安全的心得体会
数据库入门知乎
网络安全管理方案
建行软件开发中心独立了吗
同城易贷 软件开发