来源:https://www.cnblogs.com/lixuefang69/p/10420186.html

SQL去重distinct方法解析

一 distinct

含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段

用法注意:

1.distinct 【查询字段】,必须放在要查询字段的开头,即放在第一个参数;

2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用;

3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的

4.不能与all同时使用,默认情况下,查询时返回的就是所有的结果。

1.1只对一个字段查重

对一个字段查重,表示选取该字段一列不重复的数据。

示例表: psur_list

PLAN_NUMBER字段去重,语句:SELECT DISTINCT PLAN_NUMBER  FROM psur_list;

结果如下:

1.2多个字段去重

对多个字段去重,表示选取多个字段拼接的一条记录,不重复的所有记录

示例表: psur_list

PLAN_NUMBER和PRODUCT_NAME字段去重,语句:SELECT DISTINCT PLAN_NUMBER,PRODUCT_NAME FROM psur_list;

结果如下:

期望结果:只对第一个参数PLAN_NUMBER取唯一值

解决办法一: 使用 group_concat 函数

语句:SELECT GROUP_CONCAT(DISTINCT PLAN_NUMBER) AS PLAN_NUMBER,PRODUCT_NAME FROM psur_list GROUP BY PLAN_NUMBER

解决办法二:使用group by

语句:SELECT PLAN_NUMBER,PRODUCT_NAME FROM psur_list GROUP BY PLAN_NUMBER

结果如下:

1.3针对null处理

distinct不会过滤掉null值,返回结果包含null值

表psur_list如下:

对COUNTRY字段去重,语句:SELECT DISTINCT COUNTRY FROM psur_list

结果如下:

1.4与distinctrow同义

语句:SELECT  DISTINCTROW COUNTRY FROM psur_list

结果如下:

二 聚合函数中使用distinct

在聚合函数中DISTINCT 一般跟 COUNT 结合使用。count()会过滤掉null项

语句:SELECT COUNT(DISTINCT COUNTRY) FROM psur_list

结果如下:【实际包含null项有4个记录,执行语句后过滤null项,计算为3】

SQL去重distinct方法解析的更多相关文章

  1. 如何使用Linq或EF来对数据去重——Distinct方法详解

    刚开始接触LINQ时使用distinct去重时和大家一样遇到了一些麻烦,很感谢 http://www.cnblogs.com/A_ming/archive/2013/05/24/3097062.htm ...

  2. SQL 去重 DISTINCT 语法

    SQL SELECT DISTINCT语句 在表中可能会包含重复值.这并不成问题, 不过有时你也许希望仅仅列出不同(distinct)的值. 关键词DISTINCT 用于返回唯一不同的值 语法 SEL ...

  3. 【C#】详解使用Enumerable.Distinct方法去重

    Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组.集合中的重复元素,还可以自定义去重的规则. 有两个重载方法 ...

  4. Linq Enumerable.Distinct方法去重

    Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组.集合中的重复元素,还可以自定义去重的规则. 有两个重载方法 ...

  5. 【转载】C#中通过Distinct方法对List集合进行去重

    在C#的List集合对象中,可以使用Distinct方法来对List集合元素进行去重,如果list集合内部元素为值类型,则Distinct方法根据值类型是否相等来判断去重,如果List集合内部元素为引 ...

  6. SQL中distinct的用法

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  7. 自己写的Python数据库连接类和sql语句拼接方法

    这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...

  8. SQL中distinct的用法和left join查询的含义

    SQL中distinct的用法   1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...

  9. SQL Server 数据加密功能解析

    SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...

  10. sql查询语句如何解析成分页查询?

    我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...

随机推荐

  1. C#应用的用户配置窗体方案 - 开源研究系列文章

    这次继续整理以前的代码.本着软件模块化的原理,这次笔者对软件中的用户配置窗体进行剥离出来,单独的放在一个Dll类库里进行操作,这样在其它应用程序里也能够快速的复用该类库,达到了快速开发软件的效果. 笔 ...

  2. 多进程池Flask实战应用

    多进程池Flask实战应用 import json import math import flask from concurrent.futures import ProcessPoolExecuto ...

  3. Android 13 - Media框架 - 异步消息机制

    关注公众号免费阅读全文,进入音视频开发技术分享群! b7693967-317e-4c46-96d3-d40d9d87e382 由于网上已经有许多优秀的博文讲解了Android的异步消息机制(ALoop ...

  4. 微服务实践k8s&dapr开发部署实验(3)订阅发布

    自托管模式运行dapr 新建订阅webapi项目,取名为backend 项目增加docker支持,取消https支持 修改Program.cs var builder = WebApplication ...

  5. iNeuOS工业互联网操作系统,增加电力IEC104协议

    1.      概述... 2 2.      配置IEC104协议设备驱动... 2 1.   概述 IEC60870-5-104 是一种电力自动化系统中常用的通信协议,使用 TCP/IP 协议作为 ...

  6. js 实现简易时钟效果

    大江东去,浪淘尽,千古风流人物.故垒西边,人道是,三国周郎赤壁.乱石穿空,惊涛拍岸,卷起千堆雪.江山如画,一时多少豪杰.遥想公瑾当年,小乔初嫁了,雄姿英发.羽扇纶巾,谈笑间,樯橹灰飞烟灭.故国神游,多 ...

  7. BOM弹窗 滚动条

     //   window.alert('弹出内容')  警告框         //   window.prompt('弹出内容') 输入框         //      以 字符串 形式 存储输入 ...

  8. monaco-editor 实现SQL编辑器

    原文链接:https://www.yuque.com/sxd_panda/antv/editor 安装 yarn add monaco-editor 或 npm install monaco-edit ...

  9. 微信刷脸SDK获取sub_openid

    当调用SDK中 获取用户信息(getWxpayfaceUserInfo) /人脸支付凭证(getWxpayfaceCode) 方法获取 sub_openid 时,除了SDK自身要传入sub_appid ...

  10. python 注册nacos 进行接口规范定义

    背景: 一般场景 python服务经常作为java下游的 算法服务或者 数据处理服务 但是使用http 去调用比较不灵活,通过注册到nacos上进行微服务调用才是比较爽的 1.定义feginapi的接 ...