Heim  >  Artikel  >  php教程  >  Oracle-spezifische Verwendung

Oracle-spezifische Verwendung

高洛峰
高洛峰Original
2016-12-13 09:33:071517Durchsuche

Das Schlüsselwort „distinct“ wird verwendet, um redundante doppelte Datensätze herauszufiltern und nur einen zu behalten. Oft wird es jedoch nur verwendet, um die Anzahl eindeutiger Datensätze zurückzugeben, anstatt alle Werte eindeutiger Datensätze zurückzugeben. Der Grund dafür ist, dass Distinct nur durch eine Doppelschleifenabfrage gelöst werden kann, was sich zweifellos direkt auf die Effizienz einer Website mit einer sehr großen Datenmenge auswirkt.

Schauen wir uns das Beispiel an:

Tabelle Tabelle

Feld 1 Feld 2 ID 1 Name a 2 b 3 c 4 c 5 b

Die Struktur ist ungefähr so. Dies ist nur ein einfaches Beispiel. Die tatsächliche Situation wird viel komplizierter sein.

Wenn ich beispielsweise eine Anweisung verwenden möchte, um alle Daten mit nicht doppelten Namen abzufragen, muss ich „distinct“ verwenden, um redundante doppelte Datensätze zu entfernen.

eindeutigen Namen aus der Tabelle auswählen Das Ergebnis ist:

----------

Name a b c

Es scheint den Effekt erzielt zu haben, aber was ich erhalten möchte, ist der ID-Wert? Ändern Sie die Abfrageanweisung:

Wählen Sie einen eindeutigen Namen und eine eindeutige ID aus der Tabelle aus

Das Ergebnis ist:

----------

ID-Name 1 a 2 b 3 c 4 c 5 b

Warum funktioniert die Unterscheidung nicht? Es funktioniert, wirkt sich jedoch auf zwei Felder gleichzeitig aus, d. h. die ID und der Name müssen identisch sein, um ausgeschlossen zu werden. . . . . . .

Ändern wir die Abfrageanweisung:

wählen Sie ID, eindeutiger Name aus Tabelle aus

Leider erhalten Sie nichts außer Fehlermeldungen, eindeutig muss an den Anfang gestellt werden. Ist es so schwierig, die Where-Bedingung eindeutig zu definieren? Ja, es wird immer noch ein Fehler gemeldet.

---------------- ------ -------------------------------------------- ------ ----------------

Die folgende Methode ist ebenfalls nicht möglich:

wählen Sie * , count(eindeutiger Name) aus der Tabellengruppe nach Namen

Ergebnis:

ORA-00979: kein GROUP BY-Ausdruck
00979 - „kein Ausdruck „GRUPPE NACH“

Es wird immer noch ein Fehler gemeldet,

Gruppieren nach muss vor „Bestellen nach“ und „Limit“ platziert werden, andernfalls wird ein Fehler gemeldet

--- ----------------------------------- -------------- ----------------------------------- --------------- -----

Ich denke, das ist machbar

select max(id), name aus der Tabellengruppe nach Namen;

Ergebnis:

ID-Name

1 a

2 b

4 c

5 d


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn