MySQL中怎么清除结果集的重复数据
创始人
2024-12-20 16:42:14
0次

一、关键字Distinct和Distinctrow
  关键字distinct一般直接跟在查询语句中SELECT的后面,替换可选的关键字all,而关键字all是默认的。Distinctrow是distinct的别名,它产生的效果与distinct是完成一样的:

双击代码全选
1 2 3 4SELECT [ALL | DISTINCT | DISTINCTROW ]select_expr[FROM table_references[WHERE where_condition]

  为了说明这些关键字的用法,我们以下表中的数据为例来进行说明。其中,该表含有一些水果名称及其对应的颜色:

  以下查询将从上表中检索所有水果的名称,并按字母顺序将其列出:

双击代码全选
1 2SELECT nameFROM fruits;

  由于没有附带颜色信息,所以每种水果品种的是重复的:

  现在,让我们使用关键字distinct再查询一次,看看结果如何:

双击代码全选
1 2SELECT DISTINCT nameFROM fruits;

  不出所料,由于附带了水果的颜色信息,所以每种水果的名称只出现了一次:

  二、重复数据的取舍
  有时候,是不能使用关键字distinct的,因为删除复制的数据会导致错误的结果。请考虑下列情形:
  客户想要生成一张职工表,以便进行某些资料统计。 为此,我们可以使用下列命令:

双击代码全选
1 2 3 4 5SELECT name,        gender,              salaryFROM employeesORDER BY name;

  奇怪的是,结果中出现了重复的“Kristen Ruegg”:

   客户说,他们不希望出现重复,所以开发人员在SELECT语句中加入了关键字distinct。 好了,这会能够满足客户的要求了,但是问题也随之而来了,因为公司确实有两个重名的员工。所以,添加关键字distinct删除了一个有效的记录,因此得 到的结果实际上错误的。我们可以通过emp_id_number来确认一下,的确有两名员工都叫Kristen Rueggs:

双击代码全选
1 2 3 4 5 6SELECT name,        gender,              salary,        emp_id_numberFROM employeesORDER BY name;

  下面是出现问题的数据,它们的emp_id_numbers都是唯一的:

  上面的情形告诉我们:使用关键字distinct的时候,要确保不会无意中删除有效数据!
  三、关键字Distinct与Group By的区别
   使用distinct与不使用聚合功能情况下对全选所有栏数据进行分组的逻辑效果是一样的。对于这样的查询,group by命令只是生产了一列分组后的值。在显示某栏并对齐分组的时候,该查询会给出该栏中不同的值。然而,在显示多栏并对它们进行分组的时候,该查询会给出每 栏中的值的不同的组和。例如,以下查询生成的结果与第一个SELECT distinct命令的结果完全一样:

双击代码全选
1 2 3SELECT nameFROM fruits GROUP BY name;

  同样地,以下语句生成的结果,与我们的SELECT distinct语句在员工表上生成的结果也完全一样:

双击代码全选
1 2 3 4 5SELECT name,        gender,              salary FROM employeesGROUP BY name;

  关键字distinct和group by的区别在于,group by子句会对数据记录进行排序。因此:

双击代码全选
1 2 3 4 5 6 7 8 9 10 11SELECT name,        gender,              salary FROM employeesGROUP BY name;  或者:SELECT DISTINCT name,                 gender,                       salary FROM employeesORDER BY name;

四、统计重复的数据
  关键字Distinct可以用于COUNT()函数,来统计一栏中包含多少不同的值。COUNT ( distinct expression)将统计给定表达式在不同的非零值的数量。该表达式可以是要统计其中不同的非零值的数量的栏名。
  下面是表employee中的所有数据:

  对name字段应用Count distinct函数会得到六个不同的名称:

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...