如何在表中查找重复记录

时间:2012-01-11 15:06:15

标签: c# asp.net sql duplicates

我正在使用ASP.NET C#

上的应用程序

我想查看网格视图控件中的所有重复记录。

我通常使用“SqlDataSource”控件。

请注意,我不希望有一两个常见的行,我试图找到除(PK)之外的所有行相同的行。

我希望你理解这个问题。谢谢(如果您需要任何其他信息请咨询我。

6 个答案:

答案 0 :(得分:2)

在SQL中,最简单的方法是:

select column1, column2, ... /* all columns except ID */
from myTable
group by column1, column2, ... /* all columns except ID */
having count(*) > 1

答案 1 :(得分:2)

SELECT column1, column2, column3, column4, COUNT(1)
FROM yourtable
GROUP BY column1, column2, column3, column4
HAVING COUNT(1) > 1

答案 2 :(得分:1)

select
    col1,
    col2,
    col3
from
(
    select 
        col1, 
        col2,
        col3,
        row_number() over(partition by Col1, Col2, Col3, ColN order by Col3) rownum
    from yourTable
)a
where rownum > 1

这使用ROW_NUMBER()函数,该函数根据重复(partition by子句中的列)对记录进行排名。然后选择所有重复的行。

如果没有看到确切的表格结构,这个通用的答案就像我给出的那样具体。

答案 3 :(得分:1)

您可以在SQL查询中对记录进行分组和计数:

select col1, col2, col3, count(1)
from table
group by col1, col2, col3
having count(1) > 1

答案 4 :(得分:1)

有几种方法可以做到这一点,这是另一种方法:

SELECT t1.*
FROM MyTable t1
INNER JOIN MyTable t2
ON t1.field1 = t2.field1 AND t1.field2 = t2.field2 AND t1.field3 = t2.field3 ... etc ...
WHERE t1.PKID <> t2.PKID

答案 5 :(得分:0)

谢谢大家的帮助,这就是我要找的......

select ProductID, Date, Category, COUNT(*)from Table1GROUP BY ProductID, Date, Category HAVING COUNT(*) > 1 -- gets only rows with more than 1 grouping