MINUS Operator in Oracle

8

MINUS Operator

Ich habe 2 Tabellen A und B.

%Vor%

gibt 389

zurück %Vor%

gibt 217

zurück %Vor%

gibt 0 zurück

%Vor%

gibt 389

zurück %Vor%

kehrt 89

zurück

Kann jemand bitte erklären, warum die letzte Abfrage 89 und nicht 217 zurückgibt?

    
Lizzie 26.11.2013, 05:33
quelle

2 Antworten

18

MINUS nimmt die erste Ergebnismenge und entfernt alle, die in der zweiten Ergebnismenge existieren; entfernt auch alle Duplikate .

In Ihrem Beispiel hat tableA 389 Zeilen und tableB 217 Zeilen. Ihr INTERSECT zeigt an, dass keine Zeilen gemeinsam sind, was bedeutet, dass Tabelle eine MINUS-TabelleB 389 Zeilen (d. h. alle von ihnen) ist.

tableB MINUS tableA gibt den eindeutigen Satz von Zeilen in tableB zurück, daher gibt es 89 verschiedene Werte in tableB.

    
Jeffrey Kemp 26.11.2013, 07:06
quelle
10

Angenommen, Sie haben A und B gesetzt, A = {1,2,3,4} und zählen (A) = 4, B = {5,6,6,7,7} und zählen (B) = 5

A-B = {1,2,3,4} so zählt (A-B) = Anzahl (A) = 4

Aber B-A = {5,6,7} und zählen (B) = 3

Also verstehen wir hier, dass Minus die doppelten Terme (oder Zeilen) eliminiert. Das ist der Grund, warum die Zeilenanzahl von 217 auf 89 reduziert wurde.

Hoffe, das hilft.

    
akzhere 11.03.2014 07:07
quelle

Tags und Links