pgsql中distinct on的用法
在pgsql使用过程中有一个需求,是需要根据一个字段去重其他字段不去重,然后查询出表中的字段。这里就要说到group by、distinct两种。
group by吧,就是需要使用聚合函数,但我只有某一个字段(name字段)有需求,其他的字段按照原来的展示。但是在使用聚合函数不符合预期,所以就放弃。
distinct,这个是只能去重一个字段,但是不能查询出表中字段。比如我就只是针对name去重后在查询所有字段。显然是不满足我的要求。
后来,baidu到了distinct on。
select distinct on(去重列名), * from 表。可以针对某一个字段去重然后查询出全部字段展示。完美使用。
但是要明确一下,添加order by子句。
当没有使用order by时,返回的数据是不能确定的。
ps:如果查询全表可以这么写:select distinct on( course) * from student;--* 代表全部字段
可以这么写:select distinct on(course) course, id,name,score from student;--即列出全部字段
postgres=# select distinct on(course) * from student;id | name | course | score
----+--------+--------+------- 10 | 黎明 | 化学 | 83 8 | 周润发 | 外语 | 88 2 | 黎明 | 数学 | 9714 | 周星驰 | 物理 | 68 6 | 黎明 | 语文 | 85
(5 rows)
添加order by子句后明确取去重后的最高的数据。 返回的第一条数据是确定的,可以实现取最XXX的一条数据
postgres=# select distinct on(course) course, score * from student order by course, score desc ;id | name | course | score
----+--------+--------+------- 5 | 周润发 | 化学 | 87 13 | 黎明 | 外语 | 952 | 黎明 | 数学 | 9914 | 周星驰 | 物理 | 906 | 黎明 | 语文 | 91
(5 rows)
文章内容部分转载。
https://www.cnblogs.com/xsjs/p/10971752.html
https://www.cnblogs.com/zhangfx01/p/10215726.html
此网址可拓展相关知识点:https://blog.csdn.net/luojinbai/article/details/45078809
pgsql中distinct on的用法相关推荐
- PGSQL中distinct和distinct on的用法与区别
1.distinct是按照列去重 语法是: select distinct 列名[, 列名...] from 表名 使用distinct关键字查询时,是去掉某一(多)列中重复的值. 举个例子,比如我们 ...
- mysql 去除重复 Select中DISTINCT关键字的用法(查询两列,只去掉重复的一列)
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...
- mysql的group语句_MySQL中distinct与group by语句的一些比较及用法讲解
这篇文章主要介绍了MySQL中distinct与group by的一些比较及用法讲解,二者在查询操作中的用法有很多相似之处,需要的朋友可以参考下 在数据表中记录了用户验证时使用的书目,现在想取出所有书 ...
- PostgreSQL 数据库中 DISTINCT 关键字的 4 种用法
文章目录 DISTINCT DISTINCT ON IS DISTINCT FROM 聚合函数与 DISTINCT 大家好,我是只谈技术不剪发的 Tony 老师.PostgreSQL 不但高度兼容 S ...
- 数据库中distinct的用法,distinct和聚合函数一起使用,distinct的位置
distinct的详细用法 distinct的基本用法 distinct和聚合函数 distinct的位置 distinct的基本用法 一,house表,表结构如图 字段id,house_name,f ...
- tp 中distinct用法
DISTINCT 方法用于返回唯一不同的值 . 例如: $Model->distinct(true)->field('name')->select(); 生成的SQL语句是: SEL ...
- sql去重复操作详解SQL中distinct的用法
在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 表B: 1.作用于单列 select dist ...
- SQL 中distinct用法详解
转自https://blog.csdn.net/boss2967/article/details/79019467 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(disti ...
- distenct oracle_Oracle中distinct用法
Oracle中distinct关键字的作用以及优化策略: distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是d ...
最新文章
- 优秀程序员应该做的几件事【转】
- NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!...
- WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox
- mda.helper.php,dedecms后台更新缓慢甚至卡死怎么办
- linux 内核 丢弃分片包,LINUX内核关于IP分片重组问题请教
- 2005年最具钱途的人才:软件研发炙手可热
- Qt文档阅读笔记-QThreadPool的解释及使用
- 【重磅】App内可直接打开微信小程序,新增内容安全接口等
- 代理ip网站的ip怎么来的_妙用代理IP,防止IP被封
- Azkaban入门简介
- android listview去掉分割线
- 妖(至250线)——善始善终
- Python连接Access数据库详细步骤
- NeurIPS 2021 | 医学图像GAN生成,在Noisy Data上训练出超越监督学习的模型
- HTML视频打赏系统源码,「亲测」新版付费打赏视频源码/vip影视系统运营版 带采集+分销+会员中心...
- 微软mes杀毒更新服务器搭建,我的系统的不能用Microsoft Update更新的啊
- 完美Vista 自动激活安装版下载
- 网络综合布线线缆如何敷设布放_网络线和综合布线施工技术交底
- bigdecimal 平均数_用Java计算平均值
- aix 下创建vg和lv