首页 / MySQL / 正文

[MySQL]MySQL数据库中如何查询出某个数据表中某个指定列的重复的记录?

6827 发布于: 2018-04-25 读完约需3分钟

问题描述

MySQL数据库中,查询出某个数据表中某个指定列的重复的记录?比如,当前有一个数据表,其中一列的数据类型为varchar,现在想使用MySQL查询语句找到此列中重复的数据,在MySQL数据库中,如何实现这样的查询语句呢?

方案一

使用SELECTGROUP BY ... HAVING的子句即可,假如要查找的字段名为nameSQL语句如下:

SELECT name, COUNT(*) c FROM table GROUP BY name HAVING c > 1;

方案二

在使用GROUP BY的实现方案,如下:

SELECT  *
FROM    mytable mto
WHERE   EXISTS
        (
        SELECT  1
        FROM    mytable mti
        WHERE   mti.varchar_column = mto.varchar_column
        LIMIT 1, 1
        )

说明:此SQL查询语句会返回目标表中的所有字段,而不仅仅是要查找的字段。在重复数据比较多的情况下,此方案的性能会比方案一的性能好。

方案三

将所有重复数据的ID列使用逗号连接,并按照指定列分组,如下:

SELECT GROUP_CONCAT(id), name, COUNT(*) c FROM documents GROUP BY name HAVING c > 1;

方案四

SELECT t.*,(select count(*) from YOUR_TABLE as tt
  where tt.name=t.name) as count
  FROM `YOUR_TABLE` as t
  where (
     select count(*) from YOUR_TABLE as tt
     where tt.name=t.name
  ) > 1 order by count desc

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [MySQL]MySQL数据库中如何统计一段时间内以某个字段分组的年/月总数?

下一篇: [MySQL]MySQL数据库中如何在SELECT查询中使用IF语句判断某个列的值?

本文永久链接码友网 » [MySQL]MySQL数据库中如何查询出某个数据表中某个指定列的重复的记录?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册