PGSQL的distinct
概述
这个关键字就是用来去重的,说到去重的话那就就会出现另外的一个关键字group
,之后的说明介绍也会和group进行对比分析。
这个关键字的用法有两种,一种是单纯的distinct,另外一种是distinct on。
distinct | distinct on | |
---|---|---|
相同点 | 列内去重 | 组内去重。select一列并且不加order by时,作用域distinct相同 |
语法不同 | select distinct 列名[,列名……] from 表名 | select distinct on(分组列名) 列名[,列名……] from 表名 |
作用不同 | 返回某列中的非重复值 | 按指定列分组,返回每个分组中的第一行数据 |
增强功能 | 无 | 加上order by字句,可以从每个分组中取最xxx的一条数据 |
使用说明
distinct
select distinct authorized_grant_types from dg_client;
这是使用distinct去重某个字段,因为时这个只能进行列内去重,如果把其他字段也一起查询出来,那么无法做到去重,出发其他字段值一样。这个去重的效果等同于group如下案例:
select authorized_grant_types from dg_client group by authorized_grant_types;
group如此使用能达到和distinct一样的使用效果。
根据网络结果了解,再有所有等相同的情况下,这两种去重方式的效率时差不多的,但是再没有索引等的加持下,distinct的效率要过于group【本人尚未实验证实,网络查询结果如此】
distinct on
select distinct on (authorized_grant_types) authorized_grant_types,* from dg_client;
这种去重方式为什么叫组内去重呢?因为这中方式括号内的时分组字段,也就是更据这个字段将数据分成多组,然后挑出组内的第一条数据进行展示显示。
那么如何将组内的某条数据作为第一条进行展示呢?答案就是order by,通过排序让组内的某条数据排在第一位就可以展示了【order by 排序字段必须第一个写分组字段,后面再写其他字段】。
这种方式的组内去重是使用group也难以做到的。
PGSQL的distinct相关推荐
- pgsql中distinct on的用法
在pgsql使用过程中有一个需求,是需要根据一个字段去重其他字段不去重,然后查询出表中的字段.这里就要说到group by.distinct两种. group by吧,就是需要使用聚合函数,但我只有某 ...
- PGSQL中distinct和distinct on的用法与区别
1.distinct是按照列去重 语法是: select distinct 列名[, 列名...] from 表名 使用distinct关键字查询时,是去掉某一(多)列中重复的值. 举个例子,比如我们 ...
- pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置
PostgreSQL基础教程之:初始化配置 时间:2020-04-27 来源: PostgreSQL基础教程之:初始化配置 一.配置pg_hba.conf 先说明客户端认证配置文件pg_hba.con ...
- pgsql 使用技巧
1.CASCADE 级联删除,如果表或模式或数据库有序列.分区相关 依赖时,需要修改表或模式或数据库,则使用它 DROP SCHEMA viid_facestatic CASCADE 2.pgsql ...
- pgsql遇到小问题及小功能记录
一.问题: 1.ERROR: invalid input syntax for integer: "" 使用COALESCE((.a.delete_flag,'0')::int a ...
- PL/pgSQL 表达式
0.表达式的实现方式: 你写的: IF expression THEN ... 将被被服务器的主SQL执行器处理成一个查询: SELECT expression sql实际上执行的是PREPARE命令 ...
- citus 系列6 - count(distinct xx) 加速 (use 估值插件 hll|hyperloglo
背景 在分布式数据库中,计算count(distinct xxx),需要对distinct 的字段, 1.去重, 2.重分布去重后的数据,(这一步,如果distinct值特别多,那么就会比较耗时) 3 ...
- leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
题目解析 代码如下 题目解析 这一题是一道会员的题目,题目介绍如下: Given a string, find the length of the longest substring T that c ...
- RxJava 过滤操作符 distinct 和 distinctUntilChanged
distinct 看下文档 distinct : 过滤掉重复的元素 distinctUntilChanged: 过滤掉连续重复的元素,不连续重复的是不过滤 看下代码 1 distinct Obse ...
最新文章
- [Spring MVC] - JSP + Freemarker视图解释器整合(转)
- 如何解决http封包中gzip编码的html
- python任务栏通知区域_python+pyqt实现右下角弹出框
- tableview的顶部有一部分空白区域,并不是Cell的解决方法。
- 51CTO的技术门诊谈OSSIM
- proxomitron 个人代理工具
- js实现字符串的加密与解密
- 斯坦福大学CS143编译原理课程笔记:1.编译器与解释器简介
- js编码后提交java解码
- python 条件语句且_python 条件语句
- 确定有限状态自动机(deterministic finite automaton)DFA
- 【科大讯飞Face】
- 微信小程序服务器端用什么语言开发?
- 椭圆一般方程(ABCDEF)转椭圆参数方程(长短轴,几何中心)
- C/C++ opencv 计算 LBP特征 包括旋转不变 uniform 圆形邻域
- Nodejs 中 request 出现 ‘socket hang up‘ 的解决办法
- 【LorMe云讲堂】徐凌:利用全基因组促进可持续农业
- 前端websockt可重连功能的插件
- 法规标准-E-NCAP评测标准解析(2023版)
- Java实现 蓝桥杯 算法提高 Monday-Saturday质因子
热门文章
- java使用ssl连接mysql
- 掌握python和js_js与python哪个更强大 javascript和python哪个好入门
- 加码数据库创新 瀚高生态大会在青岛掀起数智浪潮
- JAVA面试集合类之ArrayList详解
- Bloodhound 简介
- VS2015 Update3 更新失败 KB3022398
- arch linux 配置pppoe,实现ADSL拨号上网
- Python一看就懂系列(三)
- 前端开发常用技术工具网址导航汇总
- Android 7.0 以后抛出的 android.os.TransactionTooLargeException 异常