2017-07-15 6 views
2

Beim Einfügen von Datensätzen über das Windows-Formular habe ich versehentlich einen Datensatz zweimal eingefügt, weil er nicht in der Datenrasteransicht des Formulars angezeigt wurde. Jetzt kann ich diesen doppelten Datensatz nicht löschen. Ich habe versucht, einen eindeutigen Schlüssel hinzuzufügen, aber dieser Vorgang ist aufgrund dieser doppelten Zeile fehlgeschlagen. Ich habe versucht, auch den Primärschlüssel zu setzen, aber dieser Vorgang ist ebenfalls fehlgeschlagen. Und ich kann es nicht manuell aus der Tabelle löschen. Die Fehlermeldung lautet wie folgt:Fehler beim Löschen doppelter Datensätze in SQL Server mit C#

Fehlerquelle: Microsoft.VisualStudio.DataTools.
Fehlermeldung: Die aktualisierten oder gelöschten Zeilenwerte machen die Zeile nicht eindeutig oder sie ändern mehrere Zeilen (2 Zeilen).

Wie kann ich diese Zeile aktualisieren oder löschen?

+0

Warum versuchen Sie, C# zu verwenden, um es zu löschen? Können Sie nur etwas SQL direkt schreiben? –

+0

Ich habe versucht, mit "löschen" Abfrage auch. Immer noch der gleiche Fehler. –

+0

Fügen Sie die von Ihnen erstellte Löschabfrage zur Frage hinzu. – Igor

Antwort

1

Zuerst müssen Sie einen eindeutigen Bezeichner hinzufügen, wie in den Kommentaren erwähnt, dass ein großes Problem sein sollte, es zu tun.

Nachdem alle Zeilen einen eindeutigen Bezeichner (für das Beispiel wird es: ID) haben, können Sie einen Befehl schreiben, der Ihre Duplikate basierend auf der ID mit einem niedrigeren numerischen Wert löscht.

Ein Beispiel-Tabelle vor der Ausführung des Befehls:

enter image description here

Befehl Duplikate löschen:

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

Die Beispieltabelle, nachdem der Befehl ausgeführt wurde:

enter image description here

Wenn Sie es versuchen möchten, stellen Sie bitte sicher, dass Sie den Befehl richtig verstehen! Es kann leicht dangures sein, wenn Sie nicht wissen, was Sie tun.

+0

Vielen Dank ... Ich habe diese Abfrage versucht, aber es löschte vorletzten Datensatz ... so gab es einen Unterschied in ID-Spalte für den letzten Datensatz .. So löschte ich den letzten Datensatz auch ... jetzt nicht ich Duplikate aufnehmen ... vielen Dank für deine Hilfe. –

+0

jederzeit, froh, ich könnte helfen. – jonathana

Verwandte Themen