MYSQL去重(使用 distinct 过滤重复数据)

使用 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 关键字只能在字段的最前面;
  1. 实现 no 字段的去重,使用 distinct 关键字。
select distinct a.no from student a;
no
1001
1002
1003
  1. 实现 name,no 字段的去重,使用 distinct 关键字。
select distinct a.name,a.nofrom student a;
name no
张三 1001
李四 1002
王五 1003
  1. 实现全表字段的去重,使用 distinct 关键字。
select distinct a.* from student a;
id name no score
1 张三 1001 98
2 李四 1002 98
3 王五 1003 96
4 张三 1001 95

注:若 distinct 关键字后有多个字段,是对多个字段的组合去重(只有多个字段的查询结果完全一样,才会去重);

  1. 实际应用中出现的一种情况,实现 distinct 关键字对一个字段去重,同时查询出其他字段的数据。即实现 id 字段的查询和 name 字段的去重。
SELECT
	a.id,
	group_concat( DISTINCT NAME ) 
FROM
	STUDENT a 
GROUP BY
	a.NAME
id name
1 张三
2 李四
3 王五

猜你喜欢

转载自blog.csdn.net/weixin_39548940/article/details/106189577