使用SQL Server在表中查找重复记录

Sah*_*hil 41 sql sql-server sql-server-2005

我正在验证一个包含电子商务网站的交易级别数据的表格,并找到确切的错误.

我希望您的帮助在SQL Server上的50列表中查找重复记录.

假设我的数据是:

OrderNo shoppername amountpayed city Item       
1       Sam         10          A    Iphone
1       Sam         10          A    Iphone--->>Duplication to be detected
1       Sam         5           A    Ipod
2       John        20          B    Macbook
3       John        25          B    Macbookair
4       Jack        5           A    Ipod
Run Code Online (Sandbox Code Playgroud)

假设我使用以下查询:

Select shoppername,count(*) as cnt
from dbo.sales
having count(*) > 1
group by shoppername
Run Code Online (Sandbox Code Playgroud)

会回来的

Sam  2
John 2
Run Code Online (Sandbox Code Playgroud)

但我不想找到重复超过1或2列.我想在我的数据中找到所有列的副本.我希望结果如下:

1       Sam         10          A    Iphone
Run Code Online (Sandbox Code Playgroud)

小智 65

with x as   (select  *,rn = row_number()
            over(PARTITION BY OrderNo,item  order by OrderNo)
            from    #temp1)

select * from x
where rn > 1
Run Code Online (Sandbox Code Playgroud)

您可以通过替换select语句来删除重复项

delete x where rn > 1
Run Code Online (Sandbox Code Playgroud)


Eug*_*ene 41

SELECT OrderNo, shoppername, amountPayed, city, item, count(*) as cnt
FROM dbo.sales
GROUP BY OrderNo, shoppername, amountPayed, city, item
HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)


Gol*_*rol 3

只需将所有字段添加到查询中,并记住将它们也添加到分组依据中。

Select shoppername, a, b, amountpayed, item, count(*) as cnt
from dbo.sales
group by shoppername, a, b, amountpayed, item
having count(*) > 1
Run Code Online (Sandbox Code Playgroud)

  • 右键单击表,选择:将表脚本编写为 >> 选择到 >> 新建查询编辑器窗口。现在您已经获得了 SELECT 列表,将其复制并粘贴到 GROUP BY 部分中。 (7认同)