PostgresQL中的NUlls first/last功能
Nulls first/last功能简介
Nulls first/last功能主要用于order by排序子句中,影响空值Null在排序结果中的位置。简单来说,Nulls first表示Null值在排序时一直排在所有值的前面,也就是处理order by a desc时PostgresQL执行器认为Null值大于所有值,而order by a或order by a asc时执行器认为Null值小于所有值,将Null值排在前面。Nulls last表示Null值在排序时一直排在所有值的后面,也就是处理order by a desc时PostgresQL执行器认为Null值小于所有值,而order by a或order by a asc时执行器认为Null值大于所有值,将Null值排在前面。当不指定Nulls first/last功能时,执行器默认认为Null值要大于所有值,以此为依据处理order by子句的排序结果。
Nulls first/last功能简单展示
以下测试均为Postgres数据库下测试,数据库版本为9.2.2,测试系统为Linux。
普通表简单功能展示:
Create table test1(a int, b int);
Insertinto test1 values(1,2);
Insertinto test1 values(3,4);
Insertinto test1 values(5);
Select * from test1 order by b desc nulls first;
a b
5
3 4
1 2
Select * from test1 order by b desc nulls last;
a b
3 4
1 2
5
Select *from test1 order by b desc nulls; 报错
分区表简单功能展示,注意PostgresQL数据库建分区表的方式:
createtable test_hash(a int, b int);
createtable test_hash1(check(a>=0 and a<5)) inherits(test_hash);
createtable test_hash2(check(a>=5)) inherits(test_hash);
createrule test_hash_1 as on insert to test_hash where(a>=0 and a<5) do insteadinsert into test_hash1 values(NEW.a,NEW.b);
createrule test_hash_2 as on insert to test_hash where(a>=5) do instead insertinto test_hash2 values(NEW.a,NEW.b);
Insertinto test_hash values(1,2);
Insertinto test_hash values(3,4);
Insertinto test_hash values(5);
Select *from test_hash order by b desc nulls first;
a b
5
3 4
2 2
Select *from test_hash order by b desc nulls last;
a b
3 4
1 2
5
以上均是select语句中的order by子句进行的Nulls first/last功能展示,创建索引等其他需要order by子句的地方同理。这里只是简单的展示了一下功能,有时间会写一些剖析PostgresQL数据库的文章出来
PostgresQL中的NUlls first/last功能的更多相关文章
- PostgreSQL中的索引(一)
引言 这一系列文章主要关注PostgreSQL中的索引. 可以从不同的角度考虑任何主题.我们将讨论那些使用DMBS的应用开发人员感兴趣的事项:有哪些可用的索引:为什么会有这么多不同的索引:以及如何使用 ...
- Postgresql中临时表(temporary table)的特性和用法
熟悉Oracle的人,相比对临时表(temporary table)并不陌生,很多场景对解决问题起到不错的作用,开源库Postgresql中,也有临时表的概念,虽然和Oracle中临时表名字相同,使用 ...
- Postgresql中的数据类型大全
一.数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer 4 字 ...
- 用ArcMap在PostgreSQL中创建要素类需要执行”create enterprise geodatabase”吗
问:用Acmap在PostgreSQL中创建要素类需要执行"create enterprise geodatabase"吗? 关于这个问题,是在为新员工做postgresql培训后 ...
- PostgreSQL中定时job执行(pgAgent)
PostgreSQL中定时job执行 业务分析 近期项目需要定期清理数据库中的多余数据,即每月1号删除指定表中一年以上的数据. 初步分析这种定时job可以使用一下两种技术实现: Linux的cront ...
- 在PostgreSQL中 pg_start_backup 做了什么?
# 在PostgreSQL中 pg_start_backup 做了什么?HM 2019-07-30 ## pg_start_backup 做一个备份开始标记,还做了一些其他的操作,下面进行探寻. * ...
- 在PostgreSQL中CREATE STATISTICS
如果你用Postgres做了一些性能调优,你可能用过EXPLAIN.EXPLAIN向你展示了PostgreSQL计划器为所提供的语句生成的执行计划,它显示了语句所引用的表如何被扫描(使用顺序扫描.索引 ...
- 实现ABP中Person类的权限功能
菜单项的显示功能已经完全OK了.那么我们就开始制作视图功能吧. 首先测试接口是否正常 我们通过代码生成器将权限和application中大部分功能已经实现了.那么我们来测试下这些接口ok不. 浏览/a ...
- 通过arcgis在PostgreSQL中创建企业级地理数据库
部署环境: Win7 64位旗舰版 软件版本: PostgreSQL-9.1.3-2-windows-x64 Postgis-pg91x64-setup-2.0.6-1 Arcgis 10.1 SP1 ...
随机推荐
- 【转】Automated Testing Detail Test Plan
Automated Testing Detail Test PlanAutomated Testing DTP Overview This Automated Testing Detail Test ...
- JScrollPane (滚动面板)使用心得
注意:使用滚动面板时,必须指定内部组件是哪个组件 JScrollPane的两种使用方式:. 方式一: //直接在创建滚动面板对象时,就指定所要显示的组件 //本例中所要显示的是jPanel JPane ...
- C#是类型安全语言
C#是一种类型安全语言:所有的表达式都解析成某个类型的一个实例,在编译器生成的代码中,只会执行对这个类型来说有效的操作. [优势] 许多错误能在编译时就检测到,确保代码在执行这段代码前是正确的: 生成 ...
- http协议&接口规范&接口测试入门
http协议 请求: 请求行:请求方法.url(协议名://ip;端口/工程名/资源路径).协议版本 请求头 :键值对 请求正文 响应: 响应行:协议版本.响应状态码.响应状态码描述 响应头 :键值对 ...
- 衡量DevOps成功的15个标准
DevOps在你的组织中运行的如何?如果你需要帮忙衡量它运行的如何,我们准备了一些DevOps的关键指标来进行追踪.这些指标可以帮助理解你的团队过去做的如何. 定义DevOps对你的组织意味着什么 D ...
- Laravel5.1接收json数据
<?php namespace App\Http\Controllers;use Illuminate\Routing\Controller as BaseController; use Ill ...
- 匿名类与lambda区别
第一种是继承Thread, 重写了Thread.run() getClass()返回的是匿名类 java.long.Thread$1 第二种是lambda, 重写了Runnable.run() ...
- mysql 示例数据库安装
示例数据库不和bin安装文件在一块, 安装数据库没有这个选项 https://dev.mysql.com/doc/index-other.html
- socket阻塞与非阻塞情况下的recv、send、read、write返回值 以及epool_wait返回值学习
https://www.cnblogs.com/longingforlife/p/3289976.html
- 数据结构---Java---LinkedList
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, D ...