精华内容
下载资源
问答
  • SQL语句distinct去重使用方法

    千次阅读 2019-08-15 16:08:57
    很多时候数据库查出来的数据会出现重复的情况。 不过这些情况用distinct就可以解决。 表A: id name 1 a ...1.对于单列的去重 select distinct name from A 执行之后的结果: nam...

    很多时候数据库查出来的数据会出现重复的情况。
    不过这些情况用distinct就可以解决。

    表A:

    idname
    1a
    2b
    3c
    4b
    1a

    表B:

    provincecity
    河北省石家庄市
    河北省石家庄市

    1.对于单列的去重

    select distinct name from A

    执行之后的结果:

    name
    a
    b
    c

    2.对于多列的去重

    实例1:

    select distinct id,name from A

    执行之后的结果如下:

    idname
    1a
    2b
    3c
    4b

    实例2:

    select distinct province,city from B

    执行之后的结果:

    provincecity
    河北省石家庄市
    河北省石家庄市

    由此可见,distinct去重是根据每一列进行去重,作用于province 和 city 两个字段,不是province 和 city 两列“字符串拼接”后再去重的。


    distinct规范

    distinct必须写在字段前面。

    select id,name distinct from A

    这样写就会报错。

    展开全文
  • 一般是采用 distinct 或者 group by 进行去重操作 但是!!! 该用哪一个呢? distinct和group by的用法 俗话说:“知己知彼”,先了解它们的用法,才能知道在什么情况下用哪个 已经知道用法的,可以直接跳过这一节...


    我是帮助主人快速定位的目录录~

    问题抛出

    当一个表中有重复数据时,该怎么在查询时去重呢?
    表中有重复数据
    一般是采用 distinct 或者 group by 进行去重操作
    但是!!!
    该用哪一个呢?

    distinct和group by的用法

    俗话说:“知己知彼”,先了解它们的用法,才能知道在什么情况下用哪个
    已经知道用法的,可以直接跳过这一节啦~

    distinct

    select distinct 字段[,字段2,...] from
    • distinct可以对一个字段或多个字段进行去重
    • distinct必须在select后的首位
    • distinct后面的所有字段都会作为去重的字段,即使字段由()括起来
    -- 只有field1和field2都重复时,才认为其是重复数据
    -- 例如上图的第一条和第十条数据就是重复数据
    select distinct field1,field2 from testDistinct;
    select distinct (field1),field2 from testDistinct;
    

    运行结果(第一条和第二条的运行结果相同):
    只是将第十条数据去掉了,field1字段还是有多个重复数据
    上边代码的运行结果
    你不会还以为第二条语句的执行结果是这个吧(偷笑.jpg):
    原以为第二条代码的执行结果

    group by

    select * fromGROUP BY 字段[,字段2,...];
    
    • group by可以对一个字段或多个字段进行分组(变相去重)
    • 查询的字段和分组的字段互不影响,即可以查询所有字段,但只对某个字段进行去重

    distinct也可以实现这个效果,只是需要子查询等方式
    将distinct查询的去重后的数据作为条件再次查询表,得到想要的字段

    group by本身是分组的,它的 “不务正业” 也说明了 “代码是死的,人是活的” 这句话,嘿嘿
    它能够去重,是利用了它 只显示同组的第一条数据 这个特性
    例如:

    select * from testDistinct GROUP BY field1;
    

    结果:
    执行结果
    发现:field1为1的数据本来有很多条,但是只剩下第一条数据。

    用哪个?

    了解了 distinct 和 group by 的用法,就该聊聊怎么用了
    两者各有千秋

    • distinct适合各种重复数据去重,只是查询显示数据和去重不能同时做。毕竟有时候我想要看到的字段不全是需要查重的字段
    • group by适合做分类统计
      – 例如一个班级表,一个班级对应多个学生,我想要知道有多少个班级
      – 也适合查询和去重一步到位,但是一般要以两个字段为条件,毕竟group by只会显示一组里的一条数据,你需要做的是让group by认为每条正常不重复的数据就是一组

    举个例子吧~
    下面是学校的某张表,记录了每个年级有几个班
    第5条是重复数据(失败数据,没有任何用)
    需求:
    把重复数据(第5条)去掉

    表数据

    select type_id, type_name, sonType_id, sonType_name from testTable GROUP BY type_id,sonType_id;
    

    小弟无能,distinct的语句没法写出来,有能实现的,可以留言,感谢ATA

    展开全文
  • sql语句distinct去重

    2020-07-24 15:56:07
    关于去重,首先我想到的是distinct关键字 1,作用于单列去重 SELECT distinct(wg.id) FROM ws_goods wg LEFT JOIN ws_good_price gp ON gp.goodsId = wg.id WHERE wg.goodsCategoryOneId = 74 AND wg....

    首先给大家展示我要去重的内容(注:这是关联商品表和规格表查出来的内容,但是实际只需要其中的唯一商品页面展示即可)

    关于去重,首先我想到的是distinct关键字

    1,作用于单列去重

    SELECT distinct(wg.id)
    FROM
    	ws_goods wg
    	LEFT JOIN ws_good_price gp ON gp.goodsId = wg.id 
    WHERE
    	wg.goodsCategoryOneId = 74 
    	AND wg.goodsPlateForm = 1 
    	AND wg.goodsUpsales = 3 
    	AND gp.mount > 0 
    ORDER BY
    	wg.`order` ASC 

    效果是显著的,但是不能显示其他列的内容,这就看着有些揪心了~,于是,我想出了第二种方案

    2,作用于多列去重

    SELECT distinct wg.id,wg.goodsNo,wg.goodsName,gp.originPrice,gp.price 
    FROM
    	ws_goods wg
    	LEFT JOIN ws_good_price gp ON gp.goodsId = wg.id 
    WHERE
    	wg.goodsCategoryOneId = 74 
    	AND wg.goodsPlateForm = 1 
    	AND wg.goodsUpsales = 3 
    	AND gp.mount > 0 
    ORDER BY
    	wg.`order` ASC 

    效果如下

    在这里看上去好像跟没有写distinct查询出来的记录一毛一样,实际上它是根据所有的字段去重的,如果这里有两条一样的数据,那你就可以看到效果啦~~

    基于我这里数据的特殊性,貌似distinct不能完全满足我的需求:(

    不如试试这个

    select distinct(wg.id),wg.goodsNo,wg.goodsName,gp.originPrice,gp.price 
    from ws_goods wg
    	LEFT JOIN ws_good_price gp ON gp.goodsId = wg.id 
    WHERE
    	wg.goodsCategoryOneId = 74 
    	AND wg.goodsPlateForm = 1 
    	AND wg.goodsUpsales = 3 
    	AND gp.mount > 0 
    GROUP BY wg.id
    ORDER BY
    	wg.`order` ASC 

    简单一步操作就ok啦~~~希望能够帮助到你:)

    展开全文
  • SQL语句distinct的多个字段去重问题

    万次阅读 多人点赞 2018-09-13 14:52:25
    select distinct name, id from table 或者 select name,id from table group by name 像这样是错误的写法,distinct不起作用的 曲线救国写法: select name,id from table where id in (  select min(id) ...

    经典例子

    select distinct name, id from table

    或者

    select name,id from table group by name

    像这样是错误的写法,distinct不起作用的

    曲线救国写法:

    select name,id from table  where id in (

          select min(id) from table group by name

    )

    思想:将需要去重的字段添加到where条件中,取出唯一id

              然后就可以获得去重之后的两个字段了

              不过我这边是你需要去重一个字段,展示两个字段的情况

     

    还可以看如下文章

    https://blog.csdn.net/yz357823669/article/details/78794050

    https://blog.csdn.net/djun100/article/details/10452165

    展开全文
  • 测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 我们使用select进行数据查询时是会返回所有匹配的记录,如果表中某些字段没有做唯一性约束,那么这些字段的值就可能...
  • SQL中怎么去重呢——distinct关键字

    千次阅读 2020-03-28 10:11:39
    查询表格 select * from students; 去除name,gender重复的行 去重前: select name,gender from students; 去重后: select distinct name,gender from students;
  • 点击上方SQL数据库开发,关注获取SQL视频教程SQL专栏SQL基础知识汇总SQL高级知识汇总我们知道DISTINCT可以去掉重复数据,GROUP BY在分组后也会去掉重复数据,那这两个...
  • sql语句去重

    万次阅读 2018-07-27 16:03:41
    这是最简单的一种情况,用关键字distinct就可以去掉 example: select distinct * from table(表名) where (条件)   CREATE TABLE 临时表 AS (select distinct * from 表名);  drop table 正式表;  insert...
  • SQL 去重不用distinct如何实现?

    千次阅读 2017-07-10 20:48:27
    1、今日面试问到SQL语句去重关键字?一时只想起来distinct【果然一定要注意总结啊 答:用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会...
  • distinct 含义:distinct用来查询不重复记录的...2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用; 3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的
  • SQLServer DISTINCT 数据去重

    千次阅读 2020-01-08 11:00:11
    DISTINCT作用就是去除重复列,准确的说是把查询的所有列看做一个整体,然后再去重复数据 有一张UserInfo表,数据如下: 查询“name”列:select name from UserInfo,结果为: 可以看出有重复的列,去除重复...
  • sql语句去重distinct、统计(count、sum)

    千次阅读 2020-12-24 11:46:44
    1、查询数组并去重用distinct()函数 select distinct(字段名) from 表名 2、count(*) 和 sum() (1)、count(*) 函数是用于统计数据的条数 select count(*) as count from A where id>0 (2)、sum() 统计某个...
  • sqldistinct多列

    千次阅读 2015-06-25 17:45:45
    distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说...
  • 等同于 SQL 语句: 代码如下: select DISTINCT last_name from users 表示的是根据指定的字段返回不同的记录集。 一个简单的实例: // > db.addresses.insert({zip-code: 10010}) > db.addresses.insert({zip-...
  • distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但是2者的性能差距很大 对于一个84万数据量的表,count(distinct(XXX))的查询需要20s,而group by...
  • 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。
  • SQL Distinct处理多列问题

    千次阅读 2018-03-05 15:53:19
     在网上搜了一下,有人说用 select *, count(distinct name) from table group by name 这样的语句是可行的,但我在SQL Server里面试了一下会报错。只好自己动手,丰衣足食啦,想了一下,其实可以用下面的语句 ...
  • Access SQL distinct 去重失效问题

    千次阅读 2018-03-17 21:27:22
    先在Access 2007中创建了这样结构的一个空表,然后将Excel题库导入该表的专业、科目、题型、正文字段,再通过自定义的一个函数通过正文字段计算出正文哈希字段,如上表所示,随后通过SQL语句:   SELECT ...
  • HiveSQL distinct去重的优化介绍

    千次阅读 2019-04-30 10:44:59
    对某些字段的去重统计,例:统计用户数量(统计去重的用户ID) count(distinct userId) 优化原因:因为引入了DISTINCT,无法在map阶段利用combine对输出结果去重,导致shuffle任务量增大 错误解...
  • sqlserver 去重查询distinct

    千次阅读 2017-10-19 15:55:41
    sqlserver
  • 使用SQL server 数据库也有好多年,现在还在用!...(1)查询语句数据,进行去重 (估计很多都懂) select distinct * from table (2)删除表重复记录(所有字段重复,记录保留1条) ,使用临时表方式: ...
  • sql server语句去重

    2020-07-08 21:50:21
    1、distinct 使用distinct 进行去重,与oracle 不同的是 sql server中会指定一个字段进行去重 有时候会因为数据与表格问题查询报错 所以一般推荐使用第二种 2、使用函数 ROW_NUMBER() OVER (PARTITION BY A.DOC_...
  • SQL distinct 单列去重

    千次阅读 2018-03-18 16:22:32
    SQL SELECT DISTINCT 语句在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。语法:SELECT DISTINCT 列名称 FROM 表名称...
  • sql语句按照字段去重

    千次阅读 2019-08-01 11:37:27
    DISTINCT sql语句按照字段去重 引用自:https://www.w3school.com.cn/sql/sql_distinct.asp 2019年8月1日 11:37:26
  • sql去重复操作详解SQLdistinct的用法

    万次阅读 多人点赞 2018-01-10 09:04:05
    这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。 表A: 表B: 1.作用于单列 select distinct name from A 执行后结果如下: 2...
  • distinct去重多个字段,其他字段不去重,一起输出 例如: select AA, BB, CC from tableName; 要求是对AA,BB这两个字段都去重,CC是不需要去重的,最后一起输出 求解!!! ...
  • SELECT DISTINCT 语句去重

    千次阅读 2019-11-26 14:14:35
    SQL SELECT DISTINCT 语句 在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。 关键词 DISTINCT 用于返回唯一不同的值。 语法: SELECT DISTINCT 列名称 FROM 表名称 ...
  • sql语句_ 的三种去重方法

    千次阅读 2019-09-30 01:44:41
    注:这里的去重是指:查询的时候, 不显示重复,并不是删除表中的重复项,关系删除表中重复数据的sql 请参考一下链接: https://www.cnblogs.com/171207xiaohutu/p/11520763.html 1. distinct 表userinfo 数据如下...
  • SQLdistinct和group by去重区别

    万次阅读 2018-07-21 18:36:04
    distinct是将所有查询的字段进行对比去重,所有字段都完全相同才会去重 distinct 必须放在查询字段开头进行查询 group by 根据字段进行去重,字段相同就会去重...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,555
精华内容 8,622
关键字:

去重sql语句distinct