alle Daten für doppelte Zeilen in Oracle anzeigen

8

Ich habe eine Tabelle mit 6 Spalten:

  • id
  • name
  • type_id
  • code
  • lat
  • long

Die ersten drei sind erforderlich. ID ist der private Schlüssel, der automatisch mit einer Sequenz eingefügt wird.

Ich habe einige Zeilen, die Duplikate sind, wie BEIDE name und type_id gleich sind, aber ich möchte alle Daten für die Duplikate sehen. Ich kann die Betrogenen einfach genug finden:

%Vor%

, aber tatsächlich alle Informationen zu sehen verwirren mich. Ich weiß, das sollte einfach sein, aber ich stoße hier auf eine Wand.

    
Marc 03.01.2012, 20:53
quelle

5 Antworten

15

Sie können die Abfrage GROUP BY / HAVING immer in einer IN-Klausel verwenden. Dies funktioniert und ist relativ einfach, aber es ist möglicherweise nicht besonders effizient, wenn die Anzahl der doppelten Zeilen relativ groß ist.

%Vor%

Im Allgemeinen wäre es effizienter, analytische Funktionen zu verwenden, um zu vermeiden, dass der Tisch ein zweites Mal getroffen wird.

%Vor%

Je nachdem, was Sie mit den Daten tun möchten und wie viele Duplikate einer bestimmten Zeile möglicherweise vorhanden sind, möchten Sie möglicherweise auch table1 mit sich selbst verknüpfen, um die Daten in einer einzelnen Zeile abzurufen.

%Vor%     
Justin Cave 03.01.2012, 21:04
quelle
1
%Vor%

Würde es tun.

HTH

    
Zsolt Botykai 03.01.2012 21:02
quelle
1

Sie können einen Self-Join in der Tabelle ausführen, um alle Duplikatpaare zu finden:

%Vor%

Um sicherzustellen, dass eine Zeile nicht mit sich übereinstimmt und jedes Paar nur einmal ausgegeben wird, habe ich a.ROWID > b.ROWID hinzugefügt, was für Oracle funktioniert. Sie benötigen einen anderen Weg, um sie auseinander zu halten, wenn Sie eine andere Datenbank verwenden.

    
The Nail 03.01.2012 21:03
quelle
0

Das Doubles findet immer noch nicht, wenn eines der verglichenen Felder einen NULL-Wert hat. Um diese zu erhalten, verwende ich nvl, um NULLs in den verglichenen Feldern mit einem Wert zu verknüpfen, von dem ich weiß, dass er in dieser Tabelle / diesem Feld nicht vorkommen kann.

    
Catherine Sudres 21.05.2014 15:12
quelle
-2

Mache einfach die NULLEN 0 ...

... benutze die NVL-Funktion.

    
Rick 02.03.2017 14:27
quelle

Tags und Links