在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的用法相关推荐

  1. PGSQL中distinct和distinct on的用法与区别

    1.distinct是按照列去重 语法是: select distinct 列名[, 列名...] from 表名 使用distinct关键字查询时,是去掉某一(多)列中重复的值. 举个例子,比如我们 ...

  2. mysql 去除重复 Select中DISTINCT关键字的用法(查询两列,只去掉重复的一列)

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...

  3. mysql的group语句_MySQL中distinct与group by语句的一些比较及用法讲解

    这篇文章主要介绍了MySQL中distinct与group by的一些比较及用法讲解,二者在查询操作中的用法有很多相似之处,需要的朋友可以参考下 在数据表中记录了用户验证时使用的书目,现在想取出所有书 ...

  4. PostgreSQL 数据库中 DISTINCT 关键字的 4 种用法

    文章目录 DISTINCT DISTINCT ON IS DISTINCT FROM 聚合函数与 DISTINCT 大家好,我是只谈技术不剪发的 Tony 老师.PostgreSQL 不但高度兼容 S ...

  5. 数据库中distinct的用法,distinct和聚合函数一起使用,distinct的位置

    distinct的详细用法 distinct的基本用法 distinct和聚合函数 distinct的位置 distinct的基本用法 一,house表,表结构如图 字段id,house_name,f ...

  6. tp 中distinct用法

    DISTINCT 方法用于返回唯一不同的值 . 例如: $Model->distinct(true)->field('name')->select(); 生成的SQL语句是: SEL ...

  7. sql去重复操作详解SQL中distinct的用法

    在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 表B: 1.作用于单列 select dist ...

  8. SQL 中distinct用法详解

    转自https://blog.csdn.net/boss2967/article/details/79019467 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(disti ...

  9. distenct oracle_Oracle中distinct用法

    Oracle中distinct关键字的作用以及优化策略: distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是d ...

最新文章

  1. 优秀程序员应该做的几件事【转】
  2. NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!...
  3. WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox
  4. mda.helper.php,dedecms后台更新缓慢甚至卡死怎么办
  5. linux 内核 丢弃分片包,LINUX内核关于IP分片重组问题请教
  6. 2005年最具钱途的人才:软件研发炙手可热
  7. Qt文档阅读笔记-QThreadPool的解释及使用
  8. 【重磅】App内可直接打开微信小程序,新增内容安全接口等
  9. 代理ip网站的ip怎么来的_妙用代理IP,防止IP被封
  10. Azkaban入门简介
  11. android listview去掉分割线
  12. 妖(至250线)——善始善终
  13. Python连接Access数据库详细步骤
  14. NeurIPS 2021 | 医学图像GAN生成,在Noisy Data上训练出超越监督学习的模型
  15. HTML视频打赏系统源码,「亲测」新版付费打赏视频源码/vip影视系统运营版 带采集+分销+会员中心...
  16. 微软mes杀毒更新服务器搭建,我的系统的不能用Microsoft Update更新的啊
  17. 完美Vista 自动激活安装版下载
  18. 网络综合布线线缆如何敷设布放_网络线和综合布线施工技术交底
  19. bigdecimal 平均数_用Java计算平均值
  20. aix 下创建vg和lv

热门文章

  1. UBOOT启动流程中的BL0,BL1,BL2
  2. 1.使用SQL语句创建表
  3. 加密软件对文件容易造成的安全问题
  4. (转)cvCvtColor中dstCn颜色空间转换说明
  5. atmega32u4 Linux,arduino整合wifi功能系列arduinoyun介绍(1)
  6. 苏炳添未上线,雷军“非正式带货”7000万
  7. form表单非空验证
  8. Android 设备 arm 架构和 x86 架构的区别
  9. 这3个好用的同声传译app,让你知道有什么同声传译软件推荐
  10. 信安第一次渗透实验(1)