`

mysql distinct 去重

 
阅读更多
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而 这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案
下面先来看看例子:
     table
   id name
   1 a
   2 b
   3 c
   4 c
   5 b
库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。
比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。
select distinct name from table
得到的结果是:
   name
   a
   b
   c
好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:
select distinct name, id from table
结果会是:
   id name
   1 a
   2 b
   3 c
   4 c
   5 b
distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。
我们再改改查询语句:
select id, distinct name from table
很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。
很麻烦吧?确实,费尽心思都没能解决这个问题。

用count函数一试,成功,我。。。。。。。想哭啊,费了这么多工夫。。。。。。。。原来就这么简单。。。。。。
现在将完整语句放出:
select *, count(distinct name) from table group by name
结果:
   id name count(distinct name)
   1 a 1
   2 b 1
   3 c 1
最后一项是多余的,不用管就行了,目的达到。。。。。
分享到:
评论

相关推荐

    Linux运维-运维课程d2-MySQL基本SQL语句(下)-14-DISTINCT去重操作.mp4

    Linux运维-运维课程d2-MySQL基本SQL语句(下)-14-DISTINCT去重操作.mp4

    Mysql中distinct与group by的去重方面的区别

    在MySQL数据库中,`DISTINCT` 和 `GROUP BY` 是两个非常重要的SQL关键字,它们都可以用来处理数据的去重问题,但在实际应用中,两者的使用场景和效果有所差异。 首先,`DISTINCT` 关键字的主要作用是去除查询结果中...

    mysql中去重 distinct用法

    总之,`DISTINCT`是MySQL中非常实用的功能,用于处理数据去重,但应谨慎使用,尤其是在大型数据集上,以避免性能问题。根据实际需求,结合`GROUP BY`和聚合函数,可以实现更复杂的去重和统计操作。

    mysql代码-distinct去重

    总结来说,`DISTINCT`是MySQL中处理数据去重的重要工具,广泛应用于数据查询和分析。理解它的用法和潜在性能影响,对于提升数据库操作的效率至关重要。通过实践和学习`main.mysql`中的示例,你可以更深入地掌握这一...

    mysql去重查询的三种方法

    本文将详细介绍三种在MySQL中实现去重查询的方法:使用DISTINCT、GROUP BY以及使用开窗函数ROW_NUMBER()或其类比方法。 ### 一、使用DISTINCT DISTINCT关键字是SQL中最常见的去重方式,它会返回所有不同的记录。...

    MySQL中使用去重distinct方法的示例详解

    含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段 用法注意: 1.distinct【查询字段】,必须放在要查询...

    将MySQL去重操作优化到极致的操作方法

    在MySQL数据库中,进行去重操作是常见的需求,特别是在处理大量数据时,高效地完成这一任务至关重要。本问题中,我们需要从源表`t_source`中提取出不重复的`created_time`和`item_name`组合,并将这50万条唯一的记录...

    MySQL DISTINCT 的基本实现原理详解

    例如,`SELECT DISTINCT user_id FROM group_message WHERE group_id = 2`,MySQL会扫描`idx_gid_uid_gc`索引,根据`group_id`的值过滤数据,然后利用索引的排序特性去重。Extra信息显示“Using WHERE; Using index...

    mysql去重的两种方法详解及实例代码

    总之,在MySQL中处理数据去重,我们可以根据实际需求灵活选择使用`DISTINCT`关键字配合`GROUP BY`,或者利用`GROUP BY`和子查询的组合。理解这两种方法并熟练运用,可以帮助我们在处理数据时更加高效。

    用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值

    但实际上,由于`DISTINCT`作用于整个结果集,它会比较每一对`id`和`name`组合是否唯一,而不是分别对每一列进行去重。因此,正确的做法是,如果你只想去除`name`的重复值,同时获取对应的`id`,应该分开处理: ```...

    MySQL中索引优化distinct语句及distinct的多字段操作

    结果显示,MySQL使用了`PRIMARY`索引来完成`DISTINCT`操作,这表明索引有效地优化了查询,避免了全表扫描。 然而,并非所有情况下`DISTINCT`都能利用索引来优化。例如,当表引擎改为MEMORY时,同样的查询可能无法...

    MySQL去重的方法整理

    总的来说,MySQL去重的方法可以根据实际需求选择合适的方法,从简单的`DISTINCT`查询到复杂的多字段去重,甚至在数据完全相同的极端情况下,通过创建临时主键来实现去重。在操作时,务必谨慎,避免误删重要数据,...

    Django 解决distinct无法去除重复数据的问题

    在其他数据库中,例如Oracle或MySQL,可以使用序列来替代`IDENTITY`函数。 #### 实例分析 根据上述方法,如果需要获取`Prodou_id`和`FinalDye`两个字段的不重复记录,可以编写如下SQL语句: ```sql SELECT MAX(id...

    MySQL中distinct语句去查询重复记录及相关的性能讨论

    在MySQL中,`DISTINCT`语句用于查询结果集中的唯一不同的值,它是一个非常有用的SQL关键字,尤其在处理去重需求时。当查询的数据可能存在重复记录时,使用`DISTINCT`可以帮助我们过滤掉这些重复项,只保留唯一的数据...

Global site tag (gtag.js) - Google Analytics