我有一个数据表,它有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
谢谢你 约翰
答案 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