如何检查SQL Server中的重复记录

时间:2010-11-25 04:47:34

标签: sql sql-server tsql

是否有人知道如何编写SQL Server脚本来检查表是否包含重复的电话号码?

示例:

我有一个名为customer的表,其中包含以下数据

name   telephone
alvin  0396521254
alan   0396521425
amy    0396521425

如何在SQL Server中编写可以返回具有重复电话号码的记录的脚本?

3 个答案:

答案 0 :(得分:25)

要查看带有重复项的值:

  SELECT c.telephone
    FROM CUSTOMER c
GROUP BY c.telephone
  HAVING COUNT(*) > 1

要查看表格中相关记录的重复项:

SELECT c.*
  FROM CUSTOMER c
  JOIN (SELECT c.telephone
          FROM CUSTOMER c
      GROUP BY c.telephone
        HAVING COUNT(*) > 1) x ON x.telephone = c.telephone

答案 1 :(得分:1)

您可以尝试类似

的内容
;WITH Duplicates AS (
        SELECT  Telephone
        FROM    Table
        HAVING  COUNT(1) > 1
)
SELECT  t.*
FROm    Table t INNER JOIN
        Duplicates d ON t.Telephone = d.Telephone

甚至像

这样的东西
SELECT  *
FROM    Table t
WHERE   EXISTS  (
                    SELECT  1
                    FROM    Table tI    
                    WHERE   tI.Telephone = t.Telephone
                    AND     tI.Name != t.Name
                )

答案 2 :(得分:0)

我确信有人会想出一个更好的解决方案,但无论如何我都会采取粗暴的态度。

如果是我,我会使用聚合COUNT函数和GROUP BY子句。

我会编写一个SQL语句,例如:

SELECT telephone, COUNT(telephone)[Entries] FROM table1
GROUP BY telephone
HAVING Entries > 1

这应该返回任何重复的电话号码,并计算存在多少重复项。