• 技术文章 >数据库 >mysql教程

    mysql怎么去掉重复的数据

    青灯夜游青灯夜游2022-01-05 12:05:37原创16424

    在mysql中,可以利用“SELECT”语句和“DISTINCT”关键字来进行去重查询,过滤掉重复的数据,语法“SELECT DISTINCT 字段名 FROM 数据表名;”。

    本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

    在 MySQL 中使用 SELECT 语句执行简单的数据查询时,返回的是所有匹配的记录。如果表中的某些字段没有唯一性约束,那么这些字段就可能存在重复值。为了实现查询不重复的数据,MySQL 提供了 DISTINCT 关键字。

    DISTINCT 关键字的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据给用户。

    DISTINCT 关键字的语法格式为:

    SELECT DISTINCT <字段名> FROM <表名>;

    其中,“字段名”为需要消除重复记录的字段名称,多个字段时用逗号隔开。

    使用 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视频教程

    以上就是mysql怎么去掉重复的数据的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:mysql 去重
    上一篇:mysql数据库的查询语句是什么 下一篇:mysql怎么设置字段注释
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• mysql怎么查询分区表信息• 完全掌握mysql的索引技巧(总结分享)• mysql中exists的用法是什么• mysql怎样修改注释• mysql增加字段的语句是什么• 怎么查看mysql的用户名和密码是什么
    1/1

    PHP中文网