2017-07-15 73 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