查询未列出 sql 中的重复记录?

Query not listing duplicate records in sql?

我正在使用以下查询查找重复记录

SELECT F.ID,f.CIVILID
FROM DBO.EMPUDF AS F
WHERE f.civilid IN (SELECT CIVILID
                    FROM dBO.EMPUDF
                    GROUP BY CIVILID
                    HAVING COUNT (CIVILID) > 1) 

子查询 returns 218 条记录是重复记录,但是当我尝试对 return name 和 id 执行查询时,它 returns 超过 10k 条记录,其中有很多空 ID 列。

嗯,你处理的是重复项,所以有很多。

您可以通过绘制直方图的直方图来了解有多少重复:

SELECT cnt, COUNT(*), MIN(CIVILID), MAX(CIVILID)
FROM (SELECT CIVILID, COUNT(*) as cnt
      FROM  dBO.EMPUDF
      GROUP BY CIVILID
     ) c
GROUP BY cnt
ORDER BY cnt;

此外,您的原始查询更简单地使用 window 函数编写:

SELECT e.*
FROM (SELECT e.*, COUNT(*) OVER (PARTITION BY CIVILID) as cnt
      FROM  dBO.EMPUDF
     ) e
WHERE cnt > 1;