Der SQL INTERSECT Befehl zeigt, welche Zeilen sowohl in TabelleA als auch in TabelleB gleichermaßen existieren.

SELECT Spalte FROM TabelleA 
INTERSECT 
SELECT Spalte FROM TabelleB; 
SQL INTERSECT

SQL INTERSECT dient zur Kombination zweier Abfragen, gibt aber nur die Zeilen aus der ersten Abfrage wieder, die mit einer Zeile der Abfrage übereinstimmen. Wenn eine Zeile in einer Abfrage vorhanden ist, aber in der anderen Fehlt, wird sie in den INTERSECT-Ergebnissen ausgelassen. Das bedeutet, dass INTERSECT nur gemeinsame Zeilen beider Abfragen wiedergibt.

SQL INTERSECT - Beispiel

Wir wollen in unserem Unternehmen überprüfen, welche Mitarbeiter bei uns auch Kunden sind, um ihnen nachträglich Mitarbeiterrabatt zu geben. Wir wollen also wissen, welche Namen sowohl in der Kunden- als auch Personaltabelle enthalten sind:

SELECT Vorname, Nachname FROM Kunden
INTERSECT
SELECT Vorname, Nachname FROM Personal; 

Die erste Abfrage gibt die Namen aller Kunden aus. Die zweite Abfrage gibt die Namen der Angestellten an. Mit INTERSECT werden alle Vor- und Nachnamen zwischen beiden Tabellen abgeglichen. Diejenigen, die sowohl Kunden als auch Angestellte sind, werden ausgegeben.

INTERSECT in MySQL

MySQL unterstützt die INTERSECT Klausel nicht. Stattdessen kann die IN oder EXISTS Klausel genutzt werden, um dieselben Resultate zu erzielen:

SELECT TabelleA.Spalte 
FROM TabelleA 
WHERE TabelleA.Spalte IN (SELECT TabelleB.Spalte FROM TabelleB);
--oder:
SELECT TabelleA.SpalteA, TabelleA.SpalteB 
FROM TabelleA
WHERE EXISTS (SELECT * FROM TabelleB
              WHERE TabelleA.SpalteA = TabelleB.SpalteA 
              AND TabelleA.SpalteB = TabelleB.SpalteB); 

ARTIKEL TEILEN

Hast du Fragen? Hinterlasse einen Kommentar!