Direkt zum Inhalt

SQL NOT IN Operator: Ein umfassender Leitfaden für Anfänger

Beherrsche den NOT IN-Operator von SQL mit dieser Anleitung für Einsteiger. Lerne, Daten effektiv zu filtern, häufige Fallstricke zu vermeiden und effiziente Alternativen zu erkunden
Aktualisierte 16. Jan. 2025  · 5 Min. Lesezeit

Im Bereich der Datenanalyse und -verwaltung ist SQL (Structured Query Language) ein wichtiges Werkzeug für den Zugriff auf und die Bearbeitung von Datenbanksystemen. Der NOT IN Operator ist ein leistungsfähiges Mittel zum Filtern von Datensätzen, mit dem du Zeilen ausschließen kannst, die mit einer bestimmten Liste von Werten übereinstimmen. Dieses Tutorial soll den NOT IN Operator für Anfänger und Datenpraktiker entmystifizieren, um Klarheit in seiner Anwendung zu schaffen und seine potenziellen Fallstricke zu verstehen.

Warum NICHT IN?

Die Entscheidung, sich auf den Operator NOT IN zu konzentrieren, beruht auf seiner Nützlichkeit in Datenausschluss-Szenarien. Egal, ob du Daten bereinigst, Berichte vorbereitest oder komplexe Analysen durchführst, es ist von unschätzbarem Wert zu wissen, wie du bestimmte Datenpunkte effektiv ausschließen kannst. Dieser Operator bietet eine einfache Syntax, hat aber einige Feinheiten, die die Leistung und Genauigkeit beeinträchtigen können.

Wir haben uns dazu entschlossen, NOT IN in die Tiefe zu gehen, um dir ein umfassendes Verständnis zu vermitteln, das dich in die Lage versetzt, es in deinen SQL-Abfragen effektiv einzusetzen.

Verstehen von SQL NOT IN

Die Grundlagen von NOT IN

Der NOT IN Operator wird in einer WHERE Klausel verwendet, um Zeilen auszuschließen, in denen der Wert einer bestimmten Spalte mit einem beliebigen Wert aus einer vorgegebenen Liste übereinstimmt. Die grundlegende Syntax lautet wie folgt:

SELECT column_names
FROM table_name
WHERE column_name NOT IN (value1, value2, ...);

Diese Syntax verdeutlicht die Rolle des Betreibers beim Filtern von Daten - ein wichtiger Schritt bei der Datenanalyse und dem Datenbankmanagement.

Praktische Anwendungen von NOT IN

Betrachte eine Datenbank mit einer Tabelle mit Kundeninformationen. Wenn du Kunden auswählen möchtest, die nicht aus bestimmten Städten stammen, ist NOT IN ein unschätzbares Werkzeug, mit dem du diese Städte ganz einfach aus deiner Ergebnismenge ausschließen kannst.

Schritt-für-Schritt NOT IN Beispiele

Beispiel 1: Bestimmte Werte ausschließen

Nehmen wir an, wir haben eine Tabelle namens Customers mit den Spalten CustomerID, CustomerName und City. Um Kunden zu finden, die nicht in "New York" oder "Los Angeles" wohnen, würde die Abfrage lauten:

CustomerlD

Kundenname

Stadt

1

John Doe

New York

2

Jane Smith

Los Angeles

3

Emily Jones

Chicago

4

Chris Brown

Miami

5

Alex Johnson

San Francisco

6

Jessica White

New York

Kunden Tabelle

SELECT CustomerName, City
FROM Customers
WHERE City NOT IN ('New York', 'Los Angeles');

Kundenname

Stadt

Emily Jones

Chicago

Chris Brown

Miami

Alex Johnson

San Francisco

Beispiel 2: NOT IN mit Unterabfragen verwenden

NOT IN kann auch mit Unterabfragen arbeiten. Zum Beispiel, um Produkte zu finden, die noch nicht bestellt wurden:

ProductID

ProductName

1

Apfel

2

Banana

3

Orange

4

Birne

5

Traube

Tabelle Produkte

OrderID

ProductID

101

2

102

4

103

2

104

3

Tabelle bestellen

SELECT ProductName
FROM Products
WHERE ProductID NOT IN (
  SELECT ProductID
  FROM Orders
);

ProductName

Apfel

Traube

Häufige Fallstricke und wie du sie vermeidest

Umgang mit NULL-Werten

Ein häufiges Problem mit NOT IN tritt auf, wenn die Liste der Werte NULL enthält. Da NULL einen unbekannten Wert darstellt, wird ein Vergleich mit NULL unter Verwendung von NOT IN keine Zeilen zurückgeben, selbst wenn es Zeilen gibt, die logischerweise von der Liste ausgeschlossen werden sollten.

Um dies zu umgehen, stelle sicher, dass die Liste der Werte nicht NULL enthält oder verwende einen alternativen Ansatz wie NOT EXISTS.

Beispiel:

Angenommen, wir haben eine Tabelle Bestellungen mit einer Spalte CustomerID, von denen einige NULL sind, um Gastbestellungen darzustellen. Wenn du eine Abfrage durchführst, um Bestellungen zu finden, die nicht von bestimmten Kunden getätigt wurden, würde die Aufnahme von NULL in die Liste dazu führen, dass du keine Ergebnisse erhältst.

OrderID

CustomerID

101

3

102

4

103

2

104

 

106

1

Tabelle der Bestellungen

-- Assume we want to exclude CustomerID 1, 2, and unknown (NULL) customers
SELECT OrderID
FROM Orders
WHERE CustomerID NOT IN (1, 2, NULL);

Diese Abfrage würde keine Zeilen zurückgeben, was wahrscheinlich nicht das gewünschte Ergebnis ist.

Lösung: Um genaue Ergebnisse zu gewährleisten, vermeide es, NULL in die Liste für NOT IN aufzunehmen. Alternativ kannst du auch eine Kombination aus NOT IN für bekannte Werte und IS NOT NULL für den effektiven Umgang mit NULLen verwenden.

SELECT OrderID
FROM Orders
WHERE CustomerID NOT IN (1, 2) AND CustomerID IS NOT NULL;

OrderID

101

102

Leistungsüberlegungen

Bei großen Datensätzen oder Unterabfragen kann NOT IN weniger effizient sein als Alternativen wie NOT EXISTS oder LEFT JOIN /IS NULL. Die Ineffizienz rührt daher, dass NOT IN jede Zeile in der Tabelle mit jedem Wert in der Liste vergleicht, was bei großen Datensätzen zu einer langsamen Leistung führen kann.

Alternativen zu SQL NOT IN

NOT EXISTS verwenden

NOT EXISTS wird oft gegenüber NOT IN empfohlen, wenn es um Unterabfragen geht, die NULL Werte zurückgeben könnten. Sie ist im Allgemeinen effizienter, weil sie anhält, sobald sie eine Übereinstimmung findet.

Beispiel:

Um Produkte zu finden, die noch nicht bestellt wurden, verwende NOT EXISTS:

SELECT ProductName
FROM Products p
WHERE NOT EXISTS (
  SELECT 1
  FROM Orders o
  WHERE o.ProductID = p.ProductID
);

ProductName

Apfel

Traube

Diese Abfrage prüft, ob ein Produkt in der Tabelle "Bestellungen" nicht vorhanden ist, was effizienter sein kann als ein Vergleich mit einer potenziell großen Liste von IDs mit NOT IN.

LEFT JOIN / IST NULL

Eine weitere effiziente Alternative zum Ausschluss von Zeilen ist die Verwendung einer LEFT JOIN in Kombination mit einer WHERE... IS NULL Klausel. Diese Methode ist besonders effektiv bei großen Datensätzen.

Beispiel:

Um das gleiche Ziel zu erreichen, Produkte zu finden, die nicht bestellt wurden:

SELECT p.ProductName
FROM Products p
LEFT JOIN Orders o ON p.ProductID = o.ProductID
WHERE o.ProductID IS NULL;

ProductName

Apfel

Traube

Diese Methode nutzt LEFT JOIN, um alle Produkte und alle dazugehörigen Bestellungen einzuschließen, und filtert dann die Produkte heraus, für die es Bestellungen über WHERE o.ProductID IS NULL gibt, um sie effektiv auszuschließen.

Best Practices für die Verwendung von NOT IN

  • Überprüfe die Liste auf NULL Werte: Stelle sicher, dass die in NOT IN verwendete Liste keine NULL-Werte enthält, um unerwartete Ergebnisse zu vermeiden.
  • Berücksichtige die Größe des Datensatzes: Bei großen Datensätzen oder Unterabfragen solltest du prüfen, ob Alternativen wie NOT EXISTS nicht eine bessere Leistung bieten.
  • Indizierung: Achte darauf, dass die in der NOT IN Klausel verwendeten Spalten nach Möglichkeit indiziert sind, um die Abfrageleistung zu verbessern.

Verwendung von NOT IN im Real Life Data Project

In der Datenanalyse wird der SQL-Befehl "Not IN" häufig verwendet, um bestimmte Daten abzurufen. In diesem Abschnitt arbeiten wir mit einer Buchhandelsdatenbank, die den Überblick über den Bestand (im Laden verfügbare Bücher) und die Verkäufe (verkaufte Bücher) behält. Unser Ziel ist es, herauszufinden, welche Bücher noch nie verkauft wurden.

Wir haben zwei Tabellen:

  • Inventar: zum Speichern von Informationen über Bücher in der Buchhandlung.
  • Verkäufe: zum Speichern von Aufzeichnungen über verkaufte Bücher.

image4.png

Tabelle zur Bestandsaufnahme

image3.png

Tabelle der Verkäufe

Jetzt wollen wir herausfinden, welche Bücher noch nie verkauft wurden.

SELECT Title, Author 
FROM Inventory 
WHERE BookID NOT IN (
    SELECT BookID 
    FROM Sales
);

image1.png

Als Nächstes wollen wir die Bücher in unserem Bestand ermitteln, die im letzten Monat nicht verkauft wurden, wobei wir davon ausgehen, dass heute der 7. Februar 2024 ist. Dabei wird das SaleDate in der Tabelle Sales mit unserem aktuellen Datum verglichen.

SELECT Title, Author 
FROM Inventory 
WHERE BookID NOT IN (
    SELECT BookID 
    FROM Sales
    WHERE SaleDate >= date('now', '-1 month')
);

image2.png

Fazit

Der NOT IN Operator ist ein vielseitiges Werkzeug in SQL, um bestimmte Werte aus deinen Abfrageergebnissen auszuschließen. Wenn du die Syntax, die praktischen Anwendungen und die möglichen Fallstricke kennst, kannst du diesen Operator bei deinen Datenmanipulationsaufgaben effektiv einsetzen.

Denke daran, die Werte von NULL und die Größe des Datensatzes zu berücksichtigen, um die Leistung und Genauigkeit deiner Abfragen zu optimieren. Wenn du dich mit NOT IN vertraut machst, wirst du feststellen, dass es eine unschätzbare Ergänzung deines SQL-Werkzeugkastens ist, mit der du deine Daten genauer und effizienter analysieren und verwalten kannst.

Mehr über NOT IN und NOT EXISTS erfährst du in unserem Kurs " Verbesserung der Abfrageleistung in SQL Server " und über SQL-Operatoren und vieles mehr in unseren Lernpfaden "SQL-Grundlagen" und " SQL-Grundlagen".

Werde Dateningenieur

Beweise deine Fähigkeiten als einsatzbereiter Datentechniker.
Meine Datenkarriere auf der Überholspur

Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Als zertifizierter Data Scientist ist es meine Leidenschaft, modernste Technologien zu nutzen, um innovative Machine Learning-Anwendungen zu entwickeln. Mit meinem fundierten Hintergrund in den Bereichen Spracherkennung, Datenanalyse und Reporting, MLOps, KI und NLP habe ich meine Fähigkeiten bei der Entwicklung intelligenter Systeme verfeinert, die wirklich etwas bewirken können. Neben meinem technischen Fachwissen bin ich auch ein geschickter Kommunikator mit dem Talent, komplexe Konzepte in eine klare und prägnante Sprache zu fassen. Das hat dazu geführt, dass ich ein gefragter Blogger zum Thema Datenwissenschaft geworden bin und meine Erkenntnisse und Erfahrungen mit einer wachsenden Gemeinschaft von Datenexperten teile. Zurzeit konzentriere ich mich auf die Erstellung und Bearbeitung von Inhalten und arbeite mit großen Sprachmodellen, um aussagekräftige und ansprechende Inhalte zu entwickeln, die sowohl Unternehmen als auch Privatpersonen helfen, das Beste aus ihren Daten zu machen.

Themen

Beginne deine SQL-Lernreise noch heute!

Zertifizierung verfügbar

Kurs

SQL für Fortgeschrittene

4 hr
210.1K
In diesem Kurs lernst du alles, was du wissen musst, um Daten mit deinem eigenen SQL-Code analysieren zu können. Jeder Schritt wird von praktischen Abfragen begleitet.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen