• PGSQL的distinct


    概述

      这个关键字就是用来去重的,说到去重的话那就就会出现另外的一个关键字group
    ,之后的说明介绍也会和group进行对比分析。

      这个关键字的用法有两种,一种是单纯的distinct,另外一种是distinct on。

    distinctdistinct on
    相同点列内去重组内去重。select一列并且不加order by时,作用域distinct相同
    语法不同select distinct 列名[,列名……] from 表名select distinct on(分组列名) 列名[,列名……] from 表名
    作用不同返回某列中的非重复值按指定列分组,返回每个分组中的第一行数据
    增强功能加上order by字句,可以从每个分组中取最xxx的一条数据

    使用说明

    • distinct

    select distinct  authorized_grant_types  from dg_client;
    
    • 1

      这是使用distinct去重某个字段,因为时这个只能进行列内去重,如果把其他字段也一起查询出来,那么无法做到去重,出发其他字段值一样。这个去重的效果等同于group如下案例:

    select authorized_grant_types from dg_client group by authorized_grant_types;
    
    • 1

      group如此使用能达到和distinct一样的使用效果。

      根据网络结果了解,再有所有等相同的情况下,这两种去重方式的效率时差不多的,但是再没有索引等的加持下,distinct的效率要过于group【本人尚未实验证实,网络查询结果如此】

    • distinct on

    select distinct on (authorized_grant_types) authorized_grant_types,* from  dg_client;
    
    • 1

      这种去重方式为什么叫组内去重呢?因为这中方式括号内的时分组字段,也就是更据这个字段将数据分成多组,然后挑出组内的第一条数据进行展示显示。

      那么如何将组内的某条数据作为第一条进行展示呢?答案就是order by,通过排序让组内的某条数据排在第一位就可以展示了【order by 排序字段必须第一个写分组字段,后面再写其他字段】。

      这种方式的组内去重是使用group也难以做到的。

  • 相关阅读:
    连接池及Druid(德鲁伊) 数据库连接池
    springcloudalibaba架构(30):Dubbo的使用入门
    【先序遍历】LCR 048. 二叉树的序列化与反序列化
    C++入门(二)
    mybatis核心配置文件
    【力扣hot100】刷题笔记Day22
    k8s ingress高级用法一
    Android 12(S) 图像显示系统 - drm_hwcomposer 简析(下)
    【软件设计师21天-考点整理】7)计算机系统构成及硬件基础知识
    二叉树习题总结
  • 原文地址:https://blog.csdn.net/Lou_Lan/article/details/126364834