Frage

Wie kann ich die eingestellte Differenz von zwei Ergebnismengen bekommen?

sagen, ich habe eine Ergebnismenge (nur eine Spalte in jedem):

result1:
'a'
'b'
'c'

result2:
'b'
'c'

ich auf minus will, was in result1 von result2 ist: result1 - result2, so dass es gleich:

 difference of result1 - result2:
 'a'
War es hilfreich?

Lösung

Um result1 ausführen - result2, können Sie result1 mit result2 verbinden, und nur Ausgabeelemente, die in result1 existieren. Zum Beispiel:

SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL

Beachten Sie, dass kein Satz ist Unterschied , und wird nicht ausgegeben Artikel in result2, die in result1 nicht existieren. Es ist Satz Subtraktion .

Siehe auch: Web archive'd Version der relevanten Blog-Post .

Andere Tipps

Wenn Sie die Dinge in result1 möchten, die nicht in result2 sind, was ist:

SELECT distinct result1
FROM t1 
WHERE result1 NOT IN (select distinct result2 from t2);

Oder:

SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)

Hinweis: wenn result1 eine Teilmenge von result2 ist dann die oben genannten Abfragen wird eine leere Menge zurückgeben (sie werden nicht Dinge in result2 zeigen, die nicht in result1 sind), so dass sie nicht Einstelldifferenzdruck sind, aber nützlich sein können, zu ( wahrscheinlich es ist effizienter als die äußere Verknüpfung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top