在MySQL中查找重复值

我有一个带有varchar列的表,并且我想查找在此列中具有重复值的所有记录。 我可以用来查找重复项的最佳查询是什么?


GROUP BY子句做一个SELECT 。 假设名称是您想要查找重复项的列:

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

这将返回第一列中名称值的结果,以及该值在第二列中出现的次数。


SELECT varchar_col
FROM table
GROUP BY varchar_col
HAVING count(*) > 1;

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

该查询返回完整的记录,而不仅仅是独特的varchar_column

此查询不使用COUNT(*) 。 如果有很多重复项, COUNT(*)很贵,并且您不需要整个COUNT(*) ,只需要知道是否有两行具有相同的值。

具有varchar_column上的索引当然会大大加快此查询速度。

链接地址: http://www.djcxy.com/p/63507.html

上一篇: Finding duplicate values in MySQL

下一篇: How can I use BFS to get a path containing some given nodes in order?