2010-10-24 5 views
6

Hallo Leute einfache Frage, kann aber nichts finden.Wie überprüft man, ob alle Felder in Oracle eindeutig sind?

Dank

+1

Alle Felder oder alle Datensätze? – Quassnoi

+0

Sie müssen viel mehr Informationen liefern. Das Minimum ist die Struktur/Definition Ihrer Tabelle (n) idealerweise als CREATE TABLE-Anweisung. Dann einige Beispieldaten und das Ergebnis, das Sie von diesen Beispieldaten erwarten. –

+0

alle Felder einer Spalte in Tabelle – Burjua

Antwort

24
SELECT myColumn, COUNT(*) 
FROM myTable 
GROUP BY myColumn 
HAVING COUNT(*) > 1 

Diese Sie alle MyColumn Werte zusammen mit der Anzahl ihres Auftretens angezeigt werden kann, wenn ihre Häufigkeit ist größer als eins (dh sie sind nicht eindeutig).

Wenn das Ergebnis dieser Abfrage leer ist, haben Sie in dieser Spalte eindeutige Werte.

+0

Ok, danke, es ist was ich brauche)))) – Burjua

1

ist eine Möglichkeit, einen eindeutigen Index zu erstellen. , wenn die Indexerstellung fehlschlägt, haben bestehende Sie doppelte Info, wenn ein Einsatz ausfällt, wäre es ein Duplikat hergestellt hat ...

2

Eine einfache Möglichkeit besteht darin, die Tabelle mit DBMS_STATS zu analysieren. Nachdem Sie dies getan haben, können Sie dba_tables betrachten ... Sehen Sie sich die Spalte num_rows an. Der Blick auf dab_tab_columns. Vergleichen Sie für jede Spalte den Wert num_distinct mit der Anzahl der Zeilen. Dies ist eine ungefähre Art zu tun, was Sie wollen, ohne einen vollständigen Tabellenscan durchzuführen, wenn Sie besorgt sind, ein Produktionssystem an einem riesigen Tisch zu beeinflussen. Wenn Sie direkte Ergebnisse erzielen möchten, tun Sie, was die anderen vorschlagen, indem Sie die Abfrage für die Tabelle mit einer Gruppe ausführen.