使用 MYSQL 进行 select 查询时,查询结果为满足查询条件的所有数据。如若表中的部分字段没有唯一约束性,就会查询出重复数据。为了查询出不重复的数据,MYSQL 提供了distinct 关键字实现数据去重。
例:
TEST 数据库中的数据表 STUDENT,其表结构和表数据如下
select a.* from student a;
id |
name |
no |
score |
1 |
张三 |
1001 |
98 |
2 |
李四 |
1002 |
98 |
3 |
王五 |
1003 |
96 |
4 |
张三 |
1001 |
95 |
使用说明:
. distinct 关键字只能在 select 语句中使用;
. 实现字段去重时, distinct 关键字只能在字段的最前面;
- 实现 no 字段的去重,使用 distinct 关键字。
select distinct a.no from student a;
- 实现 name,no 字段的去重,使用 distinct 关键字。
select distinct a.name,a.nofrom student a;
name |
no |
张三 |
1001 |
李四 |
1002 |
王五 |
1003 |
- 实现全表字段的去重,使用 distinct 关键字。
select distinct a.* from student a;
id |
name |
no |
score |
1 |
张三 |
1001 |
98 |
2 |
李四 |
1002 |
98 |
3 |
王五 |
1003 |
96 |
4 |
张三 |
1001 |
95 |
注:若 distinct 关键字后有多个字段,是对多个字段的组合去重(只有多个字段的查询结果完全一样,才会去重);
- 实际应用中出现的一种情况,实现 distinct 关键字对一个字段去重,同时查询出其他字段的数据。即实现 id 字段的查询和 name 字段的去重。
SELECT
a.id,
group_concat( DISTINCT NAME )
FROM
STUDENT a
GROUP BY
a.NAME