Können Sie mir mit SQL-Anweisungen helfen, Duplikate in mehreren Feldern zu finden?
Zum Beispiel im Pseudocode:
select count(field1,field2,field3)
from table
where the combination of field1, field2, field3 occurs multiple times
und aus der obigen Aussage möchte ich bei mehreren Vorkommen jeden Datensatz außer dem ersten auswählen .
sql
sql-server
tsql
sql-server-2008
Joe Sakeet
quelle
quelle
Antworten:
Um die Liste der Felder abzurufen, für die mehrere Datensätze vorhanden sind, können Sie Folgendes verwenden:
Überprüfen Sie diesen Link, um weitere Informationen zum Löschen der Zeilen zu erhalten.
http://support.microsoft.com/kb/139444
Bearbeiten: Wie die anderen Benutzer erwähnt haben, sollte es ein Kriterium für die Entscheidung geben, wie Sie "erste Zeilen" definieren, bevor Sie den Ansatz im obigen Link verwenden. Basierend darauf müssen Sie bei Bedarf eine order by-Klausel und eine Unterabfrage verwenden. Wenn Sie einige Beispieldaten veröffentlichen können, wäre dies wirklich hilfreich.
quelle
Sie erwähnen "den ersten", also gehe ich davon aus, dass Sie eine Art Bestellung für Ihre Daten haben. Nehmen wir an, dass Ihre Daten nach Feldern sortiert sind
ID
.Diese SQL sollte Ihnen die doppelten Einträge mit Ausnahme des ersten erhalten. Grundsätzlich werden alle Zeilen ausgewählt, für die eine andere Zeile mit (a) denselben Feldern und (b) einer niedrigeren ID vorhanden ist. Die Leistung wird nicht großartig sein, aber sie könnte Ihr Problem lösen.
quelle
Dies ist eine unterhaltsame Lösung mit SQL Server 2005, die mir gefällt. Ich gehe davon aus, dass mit "für jeden Datensatz außer dem ersten" eine weitere "id" -Spalte gemeint ist, anhand derer wir identifizieren können, welche Zeile "erste" ist.
quelle
So zeigen Sie doppelte Werte an:
quelle
Wenn Sie SQL Server 2005 oder höher verwenden (und die Tags für Ihre Frage geben SQL Server 2008 an), können Sie mithilfe von Ranking-Funktionen die doppelten Datensätze nach dem ersten zurückgeben, wenn die Verwendung von Joins aus irgendeinem Grund weniger wünschenswert oder unpraktisch ist. Das folgende Beispiel zeigt dies in Aktion, wo es auch mit Nullwerten in den untersuchten Spalten funktioniert.
Beachten Sie nach dem Ausführen dieses Beispiels, dass der erste Datensatz aus jeder "Gruppe" ausgeschlossen ist und dass Datensätze mit Nullwerten ordnungsgemäß behandelt werden.
Wenn Sie keine Spalte zum Ordnen der Datensätze innerhalb einer Gruppe zur Verfügung haben, können Sie die Spalten nach Partition als Spalten nach Reihenfolge verwenden.
quelle
quelle
Versuchen Sie diese Abfrage, um die Anzahl der einzelnen SELECT-Anweisungen einzeln zu bestimmen:
quelle