mysql avg 过滤_MySQL查询数据过滤之 DISTINCT子句简介

从表中查询数据时,可能会得到重复的行。为了删除这些重复的行,DISTINCT 语句可以帮助我们实现。

DISTINCT子句的语法:

SELECT DISTINCT select_list

FROM   table_name;

示例:DISTINCT 子句从employees表中选择雇员的唯一姓氏。

f70a4020a1ef75f7a28bc0591880243b.png

首先,SELECT语句从表中查询雇员的姓氏:

SELECT lastname FROM  employees

ORDER BY lastname;

运行结果:

c7b47322e7958a6e8d73f787d20053fd.png

从输出中可以清楚地看到,一些员工的姓氏相同,例如  Bondur,Firrelli。

DISTINCT子句从employees表中选择的唯一姓氏:

SELECT DISTINCT lastname

FROM employees ORDER BY lastname;

运行结果

4feaf6fb695ea3abcd9e56d65442c4cf.png

在此可以看到重复数据被过滤掉了

DISTINCT多列

可以在DISTINCT 多于一个的列中使用该子句。在这种情况下,MySQL使用这些列中值的组合来确定结果集中行的唯一性。

e18d42a0aa2a8e16c8d79ce24205b7a3.png

从customers表中获得城市和州的唯一组合,请使用以下查询:

SELECT DISTINCT  state, city

FROM  customers

WHERE   state IS NOT NULL  ORDER BY state, city;

运行结果如下:

716e89174e4279e5532c3e174c219f6e.png

没有该DISTINCT 子句,将获得州和城市的重复组合,如下所示:

SELECT state, city FROM customers

WHERE state IS NOT NULL ORDER BY state , city;

运行结果:

cac929dfb318d4477c0dde834fce273e.png

DISTINCT和聚合函数

可以将DISTINCT子句与聚合函数(例如SUM,AVG和COUNT)一起使用,以在将聚合函数应用于结果集之前删除重复的行。

例如,要计算美国客户的唯一状态,请使用以下查询:

SELECT  COUNT(DISTINCT state) FROM customers

WHERE country = 'USA';

运行结果如下:

a0926a33b40bb0ef463d422eaa0429f4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值