是否有人知道如何编写SQL Server脚本来检查表是否包含重复的电话号码?
示例:
我有一个名为customer的表,其中包含以下数据
name telephone
alvin 0396521254
alan 0396521425
amy 0396521425
如何在SQL Server中编写可以返回具有重复电话号码的记录的脚本?
答案 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
这应该返回任何重复的电话号码,并计算存在多少重复项。