无法使用 C# 删除 SQL 服务器中的重复记录
Unable to delete duplicate record in SQL Server using C#
通过 windows 表单插入记录时,我不小心插入了两次记录,因为它没有反映在表单本身的数据网格视图中。现在我无法删除该重复记录。我试图添加唯一键,但该操作因该重复行而失败。我也尝试设置主键,但该操作也失败了。而且我无法手动将其从 table 中删除。报错信息如下:
Error Source: Microsoft.VisualStudio.DataTools.
Error Message: The row value(s) updated or deleted either do not make the row unique or they alter multiple rows(2 rows).
如何更新或删除该行?
首先,您必须添加评论中提到的唯一标识符,这不应该
做这件事是个大问题。
所有行都有一个唯一标识符(例如:ID)后,您将能够编写一个命令,根据具有较低数值的 ID 删除重复项。
执行命令前的一个例子table:
删除重复项的命令:
DELETE FROM YOURTABLE
WHERE ID NOT IN (SELECT MAX(ID)
FROM YOURTABLE
GROUP BY OLD_DUPLICATE_VALUE
HAVING MAX(ID) IS NOT NULL)
命令执行后的例子table:
如果您打算尝试,请确保您正确理解命令!如果您不知道自己在做什么,可能会有点危险。
通过 windows 表单插入记录时,我不小心插入了两次记录,因为它没有反映在表单本身的数据网格视图中。现在我无法删除该重复记录。我试图添加唯一键,但该操作因该重复行而失败。我也尝试设置主键,但该操作也失败了。而且我无法手动将其从 table 中删除。报错信息如下:
Error Source: Microsoft.VisualStudio.DataTools.
Error Message: The row value(s) updated or deleted either do not make the row unique or they alter multiple rows(2 rows).
如何更新或删除该行?
首先,您必须添加评论中提到的唯一标识符,这不应该 做这件事是个大问题。
所有行都有一个唯一标识符(例如:ID)后,您将能够编写一个命令,根据具有较低数值的 ID 删除重复项。
执行命令前的一个例子table:
删除重复项的命令:
DELETE FROM YOURTABLE
WHERE ID NOT IN (SELECT MAX(ID)
FROM YOURTABLE
GROUP BY OLD_DUPLICATE_VALUE
HAVING MAX(ID) IS NOT NULL)
命令执行后的例子table:
如果您打算尝试,请确保您正确理解命令!如果您不知道自己在做什么,可能会有点危险。