首页 > 数据库 > MySQL > 正文

mysql如何删掉重复的数据

2024-07-24 12:33:49
字体:
来源:转载
供稿:网友
  在 MySQL 中使用 SELECT 语句执行简单的数据查询时,返回的是所有匹配的记录。如果表中的某些字段没有唯一性约束,那么这些字段就可能存在重复值。为了实现查询不重复的数据,MySQL 提供了 DISTINCT 关键字。
 
  DISTINCT 关键字的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据给用户。
 
  DISTINCT 关键字的语法格式为:
 
  SELECT DISTINCT <字段名> FROM <表名>;
  其中,“字段名”为需要消除重复记录的字段名称,多个字段时用逗号隔开。
 
  使用 DISTINCT 关键字时需要注意以下几点:
 
  DISTINCT 关键字只能在 SELECT 语句中使用。
  在对一个或多个字段去重时,DISTINCT 关键字必须在所有字段的最前面。
  如果 DISTINCT 关键字后有多个字段,则会对多个字段进行组合去重,也就是说,只有多个字段组合起来完全是一样的情况下才会被去重。
  示例
 
  下面通过一个具体的实例来说明如何实现查询不重复数据。
 
  test 数据库中 student 表的表结构和数据如下所示:
 
  mysql> SELECT * FROM test.student;
  +----+----------+------+-------+
  | id | name     | age  | stuno |
  +----+----------+------+-------+
  |  1 | zhangsan |   18 |    23 |
  |  2 | lisi     |   19 |    24 |
  |  3 | wangwu   |   18 |    25 |
  |  4 | zhaoliu  |   18 |    26 |
  |  5 | zhangsan |   18 |    27 |
  |  6 | wangwu   |   20 |    28 |
  +----+----------+------+-------+
  6 rows in set (0.00 sec)
  结果显示,student 表中存在 6 条记录。
 
  下面对 student 表的 age 字段进行去重,SQL 语句和运行结果如下:
 
  mysql> SELECT DISTINCT age FROM student;
  +------+
  | age  |
  +------+
  |   18 |
  |   19 |
  |   20 |
  +------+
  3 rows in set (0.00 sec)
  对 student 表的 name 和 age 字段进行去重,SQL 语句和运行结果如下:
 
  mysql> SELECT DISTINCT name,age FROM student;
  +----------+------+
  | name     | age  |
  +----------+------+
  | zhangsan |   18 |
  | lisi     |   19 |
  | wangwu   |   18 |
  | zhaoliu  |   18 |
  | wangwu   |   20 |
  +----------+------+
  5 rows in set (0.00 sec)
  对 student 表中的所有字段进行去重,SQL 语句和运行结果如下:
 
  mysql> SELECT DISTINCT * FROM student;
  +----+----------+------+-------+
  | id | name     | age  | stuno |
  +----+----------+------+-------+
  |  1 | zhangsan |   18 |    23 |
  |  2 | lisi     |   19 |    24 |
  |  3 | wangwu   |   18 |    25 |
  |  4 | zhaoliu  |   18 |    26 |
  |  5 | zhangsan |   18 |    27 |
  |  6 | wangwu   |   20 |    28 |
  +----+----------+------+-------+
  6 rows in set (0.00 sec)
  因为 DISTINCT 只能返回它的目标字段,而无法返回其它字段,所以在实际情况中,我们经常使用 DISTINCT 关键字来返回不重复字段的条数。
 
  查询 student 表中对 name 和 age 字段去重之后记录的条数,SQL 语句和运行结果如下:
 
  mysql> SELECT COUNT(DISTINCT name,age) FROM student;
  +--------------------------+
  | COUNT(DISTINCT name,age) |
  +--------------------------+
  |                        5 |
  +--------------------------+
  1 row in set (0.01 sec)
  结果显示,student 表中对 name 和 age 字段去重之后有 5 条记录。
 
  感谢各位的阅读!关于“mysql如何去掉重复的数据”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表