2017-03-15 2 views
-3

Ich versuche, Minusoperator zu der gleichen Tabelle zu verwenden, um doppelte Datensätze anzuzeigen, indem in der zweiten Abfrage ein anderes Schlüsselwort verwendet, aber das Abfrageergebnis war keine Zeilen ausgewählt.so Also, was ist die Erklärung von diesem ?Minusoperator in Oracle für die gleiche Tabelle

Wählen Sie column1 aus my_table minus Wählen Sie distinct (column1) von my_table;

+0

Wenn Sie doppelte Werte suchen müssen, finden Sie bei einer Suche viele gute Antworten in SO. Wenn Sie ein anderes Problem haben, senden Sie bitte einige Beispieldaten und das gewünschte Ergebnis, um Ihren Bedarf besser zu erklären. – Aleksej

Antwort

0

"Also, was ist die Erklärung dieser Select-Spalte1 von my_table minus Select distinct (column1) von my_table;"

Der MINUS-Operator erzeugt eine Ergebnismenge aller Werte in der oberen Unterabfrage, die nicht in der unteren Unterabfrage enthalten sind. Es ist ein SET, was bedeutet, dass es nur eindeutige Werte zurückgibt (daher ist die Verwendung von distinct unnötig). Offensichtlich sind in Ihrer Abfrage alle Werte in der unteren Unterabfrage in der oberen Unterabfrage, daher die leere Ergebnismenge.

Um doppelte Werte zu finden, müssen Sie eine Aggregatfunktion verwenden. Diese HAVING-Klausel gibt nur Werte von column1 zurück, die mehrmals vorkommen.

select column1 , count(*) 
from my_table 
group by column1 having count(*) > 1; 
Verwandte Themen