• 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也难以做到的。

  • 相关阅读:
    嵌入式linux下sqlite3数据库操作
    STM32 新建工程
    JUC——并发编程—第二部分
    Linux系统:多线程
    MySQL数据库期末考试试题及参考答案(04)
    Windows 11 使用 MySQL 官方压缩包手动安装
    Python元组详细教程
    MySQL-锁
    Centos服务器部署前后端项目
    思维链(Chain-of-Thought Prompting Elicits Reasoning in Large Language Models)
  • 原文地址:https://blog.csdn.net/Lou_Lan/article/details/126364834