wie überprüft man, ob der Datensatz vor dem Einfügen vorhanden ist, um Dubletten zu vermeiden?

8

Ich möchte CustomerID , OrderTypeID und LoanNumber von tblOrder auswählen und sie mit einem neuen OrderTypeID , aber demselben CustomerID und LoanNumber einfügen. Meine Abfrage tut das, aber es dupliziert die Werte, jedes Mal, wenn die Abfrage ausgeführt wird, dupliziert es die Zeilen.

%Vor%

das ist was die Abfrage tut:

OrderID 9 - 12 sind Duplikate oder OrderID 5 - 8. Die Abfrage wurde zweimal ausgeführt, daher wurden die Datensätze dupliziert.

Das ideale Ergebnis sollte sein:

    
grace 20.01.2015, 03:58
quelle

4 Antworten

18

Das erste und wichtigste Problem hier ist nicht , dass Ihre Abfrage Duplikate einfügt; Es ist so, dass Ihre Tabelle dies zuerst ermöglicht. Daher müssen Sie zuerst einen UNIQUE INDEX für diese 3 Felder erstellen, um Dubletten zu verbieten.

Das zweite Problem besteht darin, wie mit der Situation umzugehen ist, wenn eine Operation versucht, ein Duplikat einzufügen. Sie haben zwei Hauptmöglichkeiten:

  1. Sie können zuerst nach dem Vorhandensein des Datensatzes suchen und den INSERT überspringen, wenn er gefunden wird, oder

  2. Sie können festlegen, dass der UNIQUE INDEX Duplikate ignoriert. In diesem Fall müssen Sie nicht zuerst prüfen, da die Operation automatisch fehlschlägt und nur eine Warnung angezeigt wird, dass das Duplikat nicht eingefügt wurde.

Wenn Sie Option # 1 auswählen (zuerst prüfen), dann:

%Vor%

Und dann:

%Vor%

Wenn Sie Option # 2 auswählen (nicht überprüfen), dann:

%Vor%

Und dann:

%Vor%

Beispiel für die Funktionsweise von IGNORE_DUP_KEY :

%Vor%     
Solomon Rutzky 20.01.2015, 05:02
quelle
3

dies kann Ihnen helfen

Hier prüfe ich, ob die vorhandenen Werte (die in Variablen sind) in der Tabelle vorhanden sind oder nicht, falls vorhanden leave else insert

%Vor%     
koushik veldanda 20.01.2015 04:52
quelle
1

Ist das was du willst?

%Vor%     
Felix Pamittan 20.01.2015 04:36
quelle
0

Ist das wonach Sie suchen? Stellen Sie sicher,

%Vor%     
Krish KvR 20.01.2015 04:26
quelle

Tags und Links