mysql 对于null字段排序处理

最近遇到一个需求 ,需要对一个报表的多个字段进行多字段复杂条件排序

排序字段为NULL时

Mysql对于排序字段为NULL时,有自身默认的排序规则,默认是认为null 值 是无穷小

ELECT id,script_id,last_modified,live_count,next_show
FROM virtual_live_script
where 1 = 1and creator is null
ORDER BYlive_count desc,next_show asc,last_modified desc;

可以看到 next_show 为空的字段 的确按照 升序 是最小的
在这里插入图片描述如果想让 next_show 为 null的记录排在最后 应该怎么处理呢?可以在引入一个新的字段 比如sort 字段,排序的时候 对这个新的字段也排序,就可以实现上述逻辑,同样的思路 还可以对null 值字段进行特殊处理

SELECT id,script_id,last_modified,live_count,next_show,next_show is null as sort
FROM virtual_live_script
where 1 = 1and creator is nullORDER BY live_count desc,sort asc,next_show asc,last_modified desc;

在这里插入图片描述

还有一种不加辅助字段的方法,利用IFNULL 函数,这里给为空时间,指定一个值,只不过要在业务代码中要去除2030-01-01 00:00:00 这个,有点侵入性!

SELECT id,script_id,last_modified,live_count,ifnull(next_show,'2030-01-01 00:00:00') as tmp
FROM virtual_live_script
where 1 = 1and creator is nullORDER BY live_count desc,tmp asc,last_modified desc;

在这里插入图片描述

多条件复杂排序

对于多条件的复杂排序,可以使用case … when语句,类似如下思路


SELECT id,script_id,script_name,cover_url,last_modified,live_count,pre_count,end_count,status,next_show
FROM virtual_live_script
where 1 = 1and creator = :creator
order by live_count desc,CASEWHEN live_count = 0 AND next_show IS NULL THEN -1WHEN live_count = 0 AND pre_count > 0 THEN 0ELSE 0END desc,next_show asc,last_modified desc;

参考

Mysql排序字段为NULL如何排序
sort-by-start-date-desc-if-end-date-is-null-if-not-sort-by-end-date

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460041.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红队打靶练习:PHOTOGRAPHER: 1

目录 信息收集 1、arp 2、nmap 3、nikto 目录扫描 1、gobuster 2、dirsearch WEB 信息收集 enum4linux smbclient 8000端口 CMS利用 信息收集 文件上传漏洞利用 提权 信息收集 get user.txt get flag 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# a…

AI专题:2023年AI和标准化网络安全报告

今天分享的是AI系列深度研究报告:《AI专题:2023年AI和标准化网络安全报告》。 (报告出品方:enisa) 报告共计:37页 文件目的和目标 本文件的总体目标是概述与人工智能(AI)网络安全有关的标准(现有的、正在…

ChatGPT 3.5与4.0:深入解析技术进步与性能提升的关键数据

大家好,欢迎来到我的博客!今天我们将详细比较两个引人注目的ChatGPT版本——3.5和4.0,通过一些关键数据来深入解析它们之间的差异以及4.0版本的技术进步。 1. 模型规模与参数 ChatGPT 3.5: 参数数量:约1.7亿个模型层数…

格子表单GRID-FORM | 文档网站搭建(VitePress)与部署(Github Pages)

格子表单/GRID-FORM已在Github 开源,如能帮到您麻烦给个星🤝 GRID-FORM 系列文章 基于 VUE3 可视化低代码表单设计器嵌套表单与自定义脚本交互文档网站搭建(VitePress)与部署(Github Pages) 效果预览 格…

FPGA高端项目:解码索尼IMX327 MIPI相机转USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存UVC 时序USB3.0输出架构FPGA逻辑设计工程源码架构SDK软件工程源…

CentOS镜像如何下载?在VMware中如何安装?

一、问题 CentOS镜像如何下载?在VMware中如何安装? 二、解决 1、CentOS镜像的下载 (1)官方网站 The CentOS Project (2)官方中文官网 CentOS 中文 官网 (3)选择CentOS Linux…

yarn/npm certificate has expired

目录 报错 原因:HTTPS 证书验证失败 方法 a.检查网络安全软件:可能会拦截或修改 HTTPS 流量 b.strict-ssl:false关闭验证【临时方法】 报错 info No lockfile found. [1/4] Resolving packages... error Error: certificate has expired at TLS…

【MySQL进阶之路】BufferPool底层设计(上)

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

设计模式2-对象池模式

对象池模式,Object Pool Pattern,当你的应用程序需要频繁创建和销毁某种资源(比如数据库连接、线程、socket连接等)时,Object Pool 设计模式就变得很有用。它通过预先创建一组对象并将它们保存在池中,以便在…

【Godot4.2】文件系统自定义控件 - GroupButtons

GroupButtons 概述 读者朋友们好,我是巽星石,这是我的Godot4.2文件系统自定义控件系列文章。 在很多程序或插件设计中,都会用到一堆按钮的形式,好处是比较直观,用啥点啥,本质上相当于一个简化的二级树形…

re:从0开始的CSS学习之路 5. 颜色单位

0. 写在前面 没想到在CSS里也要再次了解这些颜色单位,感觉回到了大二的数字图像处理,可惜现在已经大四了,感觉并没有学会什么AI的东西 1. 颜色单位 预定义颜色名:HTML和CSS规定了147种颜色名。例如:red yellow green …

米贸搜|关于Facebook广告受限:在这些情况下,Meta会限制广告主的广告能力!

如果你被限制了投放广告,那么你会在Facebook上收到通知。 除了审查广告之外,Meta还监控和调查广告主在Meta技术上的行为,在某些情况下,Meta可能会对广告主施加限制,限制广告主的广告能力,这些限制旨在帮助保…