SQL - Order By如何处理NULL
问题来了。执行SQL语句
SELECT * FROM tbl ORDER BY x, y
如果用来排序的列x、y当中有NULL值,那么它们的顺序是怎样的呢?
不同的数据库有不同的答案,目前的主流数据库大致分为两派。
一、NULL最大派
这一派包括PostgreSQL、Oracle、DB2等。它们的原则是,排序时NULL比其他的值都要大。
最大派还有一个共性,就是都支持NULLS FIST/LAST关键字。它可以强制指定NULL在排序结果中的位置。NULLS FIRST会将所有NULL放到排序结果的最前面,NULLS LAST则将NULL放到所有结果的后面。两种情况都无视排序是升序的还是降序的。
用法如下
SELECT * FROM tbl ORDER BY x NULLS FIRST, y DESC NULLS LAST
二、NULL最小派
最小派认为排序时NULL小于所有的值。属于这一派的有MySQL、SQL Server等。还有Apache Hive也是这一派……如果你认为它是数据库的话。
上面三个最小派成员都不支持NULLS FIRST/LAST关键字。如果你有什么想不开,非要改变NULL的默认排序,只能运用一些技巧了。比如这样
SELECT * FROM tbl ORDER BY IF(ISNULL(x), 1, 0)
这里使用了IF和ISNULL两个函数,相当于创建了一个新列。如果x是NULL,这一列是1;如果x不是NULL,这一列是0。对新列排序,相当于NULL变成了最大值。
最小派里还有一个另类人物,SparkSQL。它不是数据库,但是支持SQL。SparkSQL也将NULL视为最小,同时它也支持NULLS FIRST/LAST。
SQL - Order By如何处理NULL的更多相关文章
- sql求和涉及到null值
SQL ISNULL().NVL().IFNULL() 和 COALESCE() 函数 请看下面的 "Products" 表: P_Id ProductName UnitPrice ...
- 在SQL Server里如何处理死锁
在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...
- SQL Server里如何处理死锁
在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以继续它们的操作.首先我想给你大致讲下SQL Server如何处理死锁.最后我会展示下SQL ...
- 【原创】6. 在MYSQL++中实现SQL语法中的NULL
这次要说明的是在MYSQL++中为了实现SQL中的NULL而做出的一系列的举措.我的感觉是Null<T, B>类型通常出现在SSQLS和template Query中比较多. 1. 什么是 ...
- org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.
今天报了这个异常,这是页面报的 org.springframework.dao.DataIntegrityViolationException: could not execute statement ...
- SQL ORDER BY 关键字
SQL ORDER BY 关键字 ORDER BY 关键字用于对结果集进行排序. SQL ORDER BY 关键字 ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序. ORDER BY ...
- SQL中IS NOT NULL与!=NULL的区别
平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS ...
- SQL-W3School-基础:SQL ORDER BY 子句
ylbtech-SQL-W3School-基础:SQL ORDER BY 子句 1.返回顶部 1. ORDER BY 语句用于对结果集进行排序. ORDER BY 语句 ORDER BY 语句用于根据 ...
- SQL Server里如何处理死锁 (转)
http://www.cnblogs.com/woodytu/p/6437049.html 在今天的文章里,我想谈下SQL Server里如何处理死锁.当2个查询彼此等待时会发生死锁,没有一个查询可以 ...
随机推荐
- 如何通俗的理解spring的控制反转、依赖注入、面向切面编程等等
之前一直不理解spring的一些基础特性是什么意思,虽然网上的解释也很多,但是由于我比较笨,就是看不懂,知道最近才稍微了解,下面就以通俗讲解的方式记录下来. 前言 假设我是一个没有开店经验的小老板,准 ...
- git - 简明指南
助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics如有纰漏,请在 github 提报问题 安装 下载 git OSX 版 下载 g ...
- MongoDB安装与配置
参考文档:MongoDB官方文档 版本:3.6.4 从版本3.6开始,MongoDB需要Windows Server 2008 R2,Windows 7或更高版本. 第一步,在下载中心下载最新版本的M ...
- ARP攻击之Kali Linux局域网断网攻击
特别声明: 我们学习研究网络安全技术的目的应是为了维护网络世界的安全,保护自己和他人的私有信息不被非法窃取和传播.请您遵守您所在地的法律,请勿利用本文所介绍的相关技术做背离道德或者违反法律的事情. S ...
- 架构选型之Nodejs与Java
前言: 身边越来越多的同事谈论Nodejs,谈其异步IO.事件回调.前后台统一一门语言,创业的朋友的第一个创业项目也选择了Nodejs,期望能够使用一种语言节省成本快速完成需求开发.与其他项目组的同事 ...
- 对于bootstrap可视化布局设计可以参考2017.6.2
http://www.layoutit.cn/v3/index.html 可视化布局链接,拖好控件自动生成代码非常方便 http://www.jq22.com/jquery-info14044 这 ...
- app后端设计(3)--短信,邮件,推送服务(2014.12.05更新)
在app的后端设计中,免不了消息的推送,短信,邮件等服务,下面就个人的开发经验谈谈这方面. (1)最重要的是,各种推送一定要放在队列系统中处理,不然会严重影响api的响应时间. (2)短信方面 以前我 ...
- Dreamweaver无法启动:xml parsing fatal error..Designer.xml错误解决方法
xml parsing fatal error:Invalid document structure,line:1,file:C:\Documents and Settings\Administrat ...
- Nodejs.调用Linux命令
当需要Node.js在后台帮忙运行Linux命令脚本时, 可以用上以下方法 上代码 var spawn = require('child_process').spawn; free = spawn(' ...
- teeporxy.go
package,, { cer, err := tls.LoadX509KeyPair(*tlsCertificate, *tlsPrivateKey) if err ...