去除重复行 [MySQL][数据库]

去除重复行

在默认情况之下,查询会返回全部的行,包括重复行,那么有的时候我们的实际需求是对于每个重复行我们只要一行,其余重复的都删除,这个时候我们就要进行去除重复行
比如我们给出一个实际问题如下:

如果这个时候我们要查询员工表中一共有哪些部门id,那么我们应该如何去做?

那么有了这个问题之后我们就要去解决这个问题:
我们给出如下几种解决方式便于我们理解(其中既有错误的解决方式,也有正确的解决方式,便于我们对照理解如何去除重复行)
  1. 方式一 : (错误的,执行是通过的,但是不符合要求(返回的结果不正确))
SELECT department_id FROM employees;
  • 这种情况下执行是可以通过的,但是返回的结果是不正确的,我们要的是查询员工表中有哪些部门id,这个时候我们如果是这种写法,那么执行下来就会将所有员工的包括重复的部门id都显示出来, 比如我们这个时候一共有120个员工,那么这个时候我们就查询到了120个部门, 但是这个时候我们会发现查询的这120个部门id中有很多都是重复的,因为可能有很多的员工都是同一个部门的,这个时候输出这个结果显然是不符合我们的需求的, 我们的实际需求是要将员工表中的部门id都有哪些统计出来,这个时候不要重复的部门id,每个部门id有一个就够了
  1. 方式二 : (正确的,执行通过,也符合我们的需求)
SELECT DISTINCT department_id FROM employees;
  • 这里引入了一个关键字: DISTINST(distinct)
    • distinct 的英文含义为: 不同的
  • 这里我们加入了DISTINCT关键字之后显示的结果中没有重复的department_id(部们id),将重复的部门id去除掉了
    • 这样我们去除了重复的部门id(department_id)之后也就符合我们的实际需求了
上面我们引入了DISTINCT关键字,那么这里我们就来说明一下两种DISTINCT关键字的错误使用方式
  1. 错误使用方式一:(执行是错误的)

    SELECT salary,DISTINCT department_id FROM employees;
    
    • 这种方式显然是错误的,从字面来看,这样的写法表示的意思是对于salary字段不去重,而对于department_id则是要去重,这样显然是有问题的,显然执行是不会通过的,如果这个时候执行是可以通过的,那么显然前面的salary要多(因为salary没有去重),而后面的department_id少(department_id去重了),这个时候显然是不合理的
  2. 错误使用方式二:(执行是正确的,但是没有什么实际意义)

    SELECT DISTINCT department_id,salary FROM employees;
    
    • 这种方式执行是可以通过的,但是显然是没有什么实际意义.这样的写法表示的是将department_id和salary字段都重复的记录去掉
    • 这种方式下我们不能完成具体的实际需求,没有实际意义,所以我们在实际编程中一般都不会这样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值