返回顶部
首页 > 资讯 > 数据库 >MySQL如何使用union all获得并集排序
  • 869
分享到

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

MySQLunionall并集排序 2022-05-22 22:05:19 869人浏览 泡泡鱼
摘要

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

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

他们在数据表中判断状态的字段(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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL如何使用union all获得并集排序

本文链接: https://lsjlt.com/news/9517.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL如何使用union all获得并集排序
    项目中有时候因为某些不可逆转的原因使得表中存储的数据难以满足在页面中的展示要求。之前的项目上有文章内容的展示功能,文章分为三个状态待发布、已发布、已下线。 他们在数据表中判断状态的字段(PROMOTE_STATUS)...
    99+
    2022-05-22
    MySQL union all 并集 排序
  • MySQL怎么使用union all获得并集排序
    这篇文章将为大家详细讲解有关MySQL怎么使用union all获得并集排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目中有时候因为某些不可逆转的原因使得...
    99+
    2024-04-02
  • 如何使用归并排序算法
    本篇内容介绍了“如何使用归并排序算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!归并排序算法思路要将一个...
    99+
    2024-04-02
  • 如何掌握并使用冒泡排序
    这篇文章主要讲解了“如何掌握并使用冒泡排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何掌握并使用冒泡排序”吧!1.什么是冒泡排序冒泡排序算法需要遍历几...
    99+
    2024-04-02
  • mysql如何使用分组排序
    mysql中使用分组排序的方法在mysql中使用order by方法实现分组排序实现方法如下:select id, (@rowno := @rowno + 1) as rank,score,(C.end_time - C.star...
    99+
    2024-04-02
  • Mysql如何使用索引排序
    在mysql中使用索引排序的方法首先,在命令行中启动MySQL服务;service mysql start  MySQL服务启动后,在命令行中输入mysql的用户名和密码登录到MySQL;mysql -u root -p登录到MySQL后,...
    99+
    2024-04-02
  • 如何在mysql中使用filesort排序
    如何在mysql中使用filesort排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明当不能用索引排序时,MySQL使用filesort扫描表进行结果...
    99+
    2023-06-15
  • 如何使用Collections.reverse对list集合进行降序排序
    目录使用Collections.reverse对list集合进行降序排序Collections.reverse原理使用Collections.reverse对list集合进行降序排序...
    99+
    2024-04-02
  • VBS如何使用正则表达式查找获得Matches集合
    这篇文章主要讲解了“VBS如何使用正则表达式查找获得Matches集合”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VBS如何使用正则表达式查找获得Matches集合”吧!Matches 集...
    99+
    2023-06-08
  • 如何使用vbs获得外网ip并发送到邮箱里
    本篇内容主要讲解“如何使用vbs获得外网ip并发送到邮箱里”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用vbs获得外网ip并发送到邮箱里”吧!复制代码 代码如下:'* *****...
    99+
    2023-06-08
  • 如何使用Spring Data Jpa查询全部并排序
    这篇文章将为大家详细讲解有关如何使用Spring Data Jpa查询全部并排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring Data Jpa查询全部并排序1、Repository层只需要简...
    99+
    2023-06-25
  • MySQL使用变量如何实现各种排序
    小编给大家分享一下MySQL使用变量如何实现各种排序,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!--下面我演示下MySQL中的排序列的实现 --测试数据 CREATE TABLE tb ( ...
    99+
    2024-04-02
  • MySQL如何使用变量实现各种排序
    这篇文章主要介绍了MySQL如何使用变量实现各种排序,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。核心代码--下面我演示下MySQL中的排序列的...
    99+
    2024-04-02
  • 如何使用Comparator比较接口实现ArrayList集合排序
    目录使用Comparator比较接口实现排序Comparator接口定义如下我们定义一个“person”类创建按年龄排序的比较器实现Comparator接口使...
    99+
    2022-12-26
    使用Comparator比较接口 ArrayList集合排序 Comparator ArrayList集合排序
  • 如何使用Redis的有序集合实现排行榜功能
    这篇文章给大家分享的是有关如何使用Redis的有序集合实现排行榜功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一个典型的游戏排行榜包括以下常见功能:能够记录每个玩家的分数;能...
    99+
    2024-04-02
  • 如何使用 Python 处理自然语言文件并获得更快的响应?
    Python 是一种强大的编程语言,它可以用于处理各种类型的数据,包括自然语言文件。在本文中,我们将探讨如何使用 Python 处理自然语言文件,并获得更快的响应。 自然语言处理是一种人工智能的分支,它涉及到对自然语言进行文本分析、语法分析...
    99+
    2023-07-02
    文件 自然语言处理 响应
  • 如何在MySQL数据库中使用field()排序函数
    本篇文章为大家展示了如何在MySQL数据库中使用field()排序函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。field()函数使用方式如下其中,order ...
    99+
    2024-04-02
  • 如何编写PHP脚本并在其中使用ORDER BY子句对MySQL表的数据进行排序?
    我们可以在 PHP 函数 mysql_query() 中使用 ORDER BY 子句的类似语法。该函数用于执行 SQL 命令,稍后可以使用另一个 PHP 函数 - mysql_fetch_array() 来获取所有选定的数据。为了说明这一点...
    99+
    2023-10-22
  • 在 MySQL 中,如何使用查询未检索到的列来指定排序顺序?
    实际上,我们知道我们可以借助 ORDER BY 子句指定排序顺序。我们需要编写 ORDER BY 关键字,后跟要对表进行排序的列的名称。我们不必在查询中的 SELECT 关键字后面使用该列名称。示例mysql> Select ...
    99+
    2023-10-22
  • 如何使用SQL语句在MySQL中进行数据排序和分组?
    如何使用SQL语句在MySQL中进行数据排序和分组?在数据库中,我们经常需要对数据进行排序和分组以满足不同的需求。MySQL提供了强大的SQL语句来实现这些操作。本文将介绍如何使用SQL语句在MySQL中进行数据排序和分组,并提供具体的代码...
    99+
    2023-12-17
    分组 SQL语句 数据排序
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作