数据表记录

时间:2010-11-09 17:53:29

标签: c#

我有一个数据表,它有4列。我的问题是有些列有相同的数据,相同的日期。我必须删除相同的数据,相同的日期。如何删除dublicate数据?

我的数据表: 在此表中,我必须删除1或3(Id)在代码端使用for或foreach循环。因为在同一天有同一个Isban。

Id名称Isban日期

1 A 123 09.09.2010

2 B 123 10.09.2010

3 C 123 09.09.2010

4 A 234 11.09.2010

5 B 342 12.09.2010

谢谢你 约翰

2 个答案:

答案 0 :(得分:0)

执行此操作的标准方法是运行select distinct查询以将不同记录插入新表,删除现有表,然后将新表重命名为上一个表。

编辑:你可以这样做,这是客户端。

这里解决了一种方法:Distinct in DataTable

或者,遍历表并在每个记录中存储一个哈希表;使用Isban / Date对作为键,记录作为值。当您遇到重复记录时,它将已经在哈希表中,因此您将其传递给它。然后,您可以从哈希表中的记录创建新的数据表。

答案 1 :(得分:0)

如果您必须在循环中执行此操作,我会执行以下操作...基于给定重复授权元素的最小ID进行预查询,然后删除NOT为最小键< / p>

Select
      FldDup1,
      FldDup2,
      min( IDKey ) as KeepThisID,
      count(*) as TotalPerDupFields
   from
      YourTable
   group by
      FldDup1,
      FldDup2
   having
      TotalPerDupFields > 1

在这种情况下,您最终得到的结果是......

FldDup1   FldDup2      KeepThisID    TotalPerDupFields
123       09.09.2010   1             2

因为我忽略了“A”,“B”和“C”的第二列,因为它似乎不是您对重复项的解释中的指标。

然后,我将通过参数化的SQL-Delete查询

进行删除
Delete from YourTable
   Where FldDup1 = ResultQuery.FldDup1
     and FldDup2 = ResultQuery.FldDup2
     and NOT IDKey = ResultQuery.KeepThisID