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

MySQL 作者: Rector 81阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

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数据库中如何查询出某个数据表中某个指定列的重复的记录?

发布于: 2018-04-25 09:07:46
分享扩散:

文章评论

获取验证码