2017-07-15 115 views
2

在通过Windows窗体插入记录时,我意外插入了一条记录两次,因为它没有反映在表单本身存在的数据网格视图中。现在我无法删除该重复记录。我试图添加唯一的密钥,但该操作失败,因为该重复行。我也尝试设置主键,但该操作也失败了。我无法手动将它从表格中删除。错误消息如下:无法使用C#删除SQL Server中的重复记录

错误来源:Microsoft.VisualStudio.DataTools。
错误消息:更新或删除的行值不会使行唯一,或者它们会更改多行(2行)。

如何更新或删除该行?

+0

你为什么要用C#来删除它,你能直接写一些SQL吗? –

+0

我也试过使用“删除”查询。仍然得到相同的错误。 –

+0

将您创建的删除查询添加到问题中。 – Igor

回答

1

首先,您必须添加注释中提到的唯一标识符,这不应该是 这样做的一个大问题。

在所有行都有唯一标识符(例如它将是:ID)后,您将能够编写一个命令,根据具有较低数值的ID删除重复项。

执行命令之前的一个例子的表:

enter image description here

命令删除重复:

DELETE FROM YOURTABLE 
WHERE ID NOT IN (SELECT MAX(ID) 
        FROM YOURTABLE 
        GROUP BY OLD_DUPLICATE_VALUE 
        HAVING MAX(ID) IS NOT NULL) 

已经执行的命令之后的示例的表:

enter image description here

如果您打算试用它,请确保您正确理解该命令!如果你不知道自己在做什么,它可能会稍微有点流血。

+0

非常感谢你......我试过这个查询,但它删除了第二个最后的记录......所以最后一个记录的ID列有所不同......所以我也删除了最后一个记录......现在我不有重复的记录...非常感谢你的帮助。 –

+0

随时,很高兴我能帮上忙。 – jonathana