问题描述
在MySQL
数据库中,查询出某个数据表中某个指定列的重复的记录?比如,当前有一个数据表,其中一列的数据类型为varchar
,现在想使用MySQL
查询语句找到此列中重复的数据,在MySQL
数据库中,如何实现这样的查询语句呢?
方案一
使用SELECT
和 GROUP BY ... HAVING
的子句即可,假如要查找的字段名为name
,SQL
语句如下:
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
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册