使用GROUP BY
子句执行SELECT
。假设name是您要在其中查找重复项的列:
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
上建立索引将大大加快此查询的速度。