Was ist die einfachste SQL-Anweisung, die die doppelten Werte für eine bestimmte Spalte und die Anzahl ihrer Vorkommen in einer Oracle-Datenbanktabelle zurückgibt?
Zum Beispiel: Ich habe eine JOBS
Tabelle mit der Spalte JOB_NUMBER
. Wie kann ich herausfinden, ob ich Duplikate habe JOB_NUMBER
und wie oft diese dupliziert werden?
sql
oracle
duplicate-data
Andrew
quelle
quelle
Antworten:
quelle
group by
, wie in:select column_one, column_two, count(*) from tablename group by column_one, column_two having count(column_one) > 1;
usw.having count(*) > 1
: DEin anderer Weg:
Funktioniert gut (schnell genug), wenn ein Index aktiviert ist
column_name
. Und es ist besser, doppelte Zeilen zu löschen oder zu aktualisieren.quelle
Am einfachsten kann ich mir vorstellen:
quelle
Sie müssen nicht einmal die Anzahl in den zurückgegebenen Spalten haben, wenn Sie die tatsächliche Anzahl der Duplikate nicht kennen müssen. z.B
quelle
Wie wäre es mit:
Um das obige Beispiel zu beantworten, würde es so aussehen:
quelle
Wenn mehrere Spalten eine eindeutige Zeile (z. B. Beziehungstabelle) identifizieren, können Sie Folgendes verwenden
Verwenden Sie die Zeilen-ID, z. B. emp_dept (empid, deptid, startdate, enddate). Nehmen Sie an, dass empid und deptid eindeutig sind, und identifizieren Sie in diesem Fall die Zeile
und wenn eine solche Tabelle einen Primärschlüssel hat, verwenden Sie den Primärschlüssel anstelle der Zeilen-ID, z. B. ist id dann pk
quelle
Tun
gibt Ihnen die IDs der duplizierten Zeilen.
quelle
quelle
Normalerweise verwende ich die Oracle Analytic- Funktion ROW_NUMBER () .
Sagen Sie bitte die Duplikate überprüfen möchten Sie haben in Bezug auf einen eindeutigen Index oder Primärschlüssel gebaut auf Spalten (
c1
,c2
,c3
). Dann gehen Sie diesen Weg und rufenROWID
s von Zeilen auf, wobei die Anzahl der eingebrachten ZeilenROW_NUMBER()
ist>1
:quelle
Hier ist eine SQL-Anfrage, um dies zu tun:
quelle
Ich weiß, dass es ein alter Thread ist, aber das kann jemandem helfen.
Wenn Sie andere Spalten der Tabelle drucken müssen, während Sie nach doppelten Verwendungszwecken suchen:
Bei Bedarf können in der where-Klausel auch einige zusätzliche Filter hinzugefügt werden.
quelle
1. Lösung
quelle
Sie können auch so etwas versuchen, um alle doppelten Werte in einer Tabelle aufzulisten, z. B. reqitem
quelle