Wie man IN und NOT IN Prädikaten in SQL-Anweisungen verwenden

Das IM und NICHT IN SQL-Prädikate Deal mit, ob angegebenen Werten (wie OR, WA, und ID) innerhalb eines bestimmten Wertesatz enthalten sind (wie die Staaten der Vereinigten Staaten).

Sie können zum Beispiel eine Tabelle, die Lieferanten einer Ware, die Ihr Unternehmen einkauft auf einer regelmäßigen Basis auflistet. Sie möchten die Telefonnummern der Lieferanten im pazifischen Nordwesten befindet sich kennen zu lernen. Sie können diese Zahlen mithilfe von Vergleichsprädikate, wie sie im folgenden Beispiel gezeigt finden:

SELECT Company, PhoneFROM SUPPLIERWHERE State = 'OR' OR State = 'WA' OR State = 'ID' -

Sie können auch die Tasten IM prädizieren die gleiche Aufgabe zu erfüllen, wie folgt:

SELECT Company, PhoneFROM SUPPLIERWHERE Staat IN ( 'OR', 'WA', 'ID') -

Diese Formulierung ist etwas kompakter als die Verwendung von Vergleichsprädikate und logisch ODER. Es beseitigt auch mögliche Verwechslungen zwischen der logischen ODER Betreiber und die Abkürzung für den Bundesstaat Oregon.

Das NICHT IN Version dieses Prädikat funktioniert auf die gleiche Art und Weise. Sagen Sie, dass Sie haben Standorte in Kalifornien, Arizona und New Mexico, und Umsatzsteuer zahlen zu vermeiden, möchten Sie Lieferanten zu prüfen, mit überall liegt außer in diesen Staaten. Verwenden Sie den folgenden Aufbau:

SELECT Company, PhoneFROM SUPPLIERWHERE Staat NICHT IN ( 'CA', 'AZ', 'NM') -

Verwendung der IM Stichwort diese Weise können Sie ein wenig Tipp spart - wenn auch (offen), dass nicht viel von einem Vorteil ist. Sie können mit Vergleichsprädikate für die gleiche Arbeit tun.

Sie können einen guten Grund haben, die zu verwenden IM Prädikat eher als Vergleichsprädikate, auch bei Verwendung von IM Das spart nicht viel Tipparbeit: Ihr DBMS wahrscheinlich anders die beiden Methoden implementiert, und eine der Methoden sein kann deutlich schneller als der andere auf Ihrem System.

Sie können einen Performance-Vergleich auf den beiden Ausdrucksweisen Aufnahme in (oder Ausschluss von) eine Gruppe und dann die Technik verwenden, um ausführen, die die schnellere Ergebnis erzeugt. Ein DBMS mit einem guten Optimierer wird wahrscheinlich die effizientere Methode wählen, unabhängig davon, welches Prädikat Sie verwenden.

Das IM Stichwort ist in einem anderen Bereich wertvoll, auch. Ob IM Teil einer Unterabfrage ist, ermöglicht das Schlüsselwort, das Sie Informationen aus zwei Tabellen zu ziehen Ergebnisse zu erhalten, die Sie nicht aus einer einzigen Tabelle ableiten können. Hier ist ein Beispiel, das zeigt, wie eine Unterabfrage verwendet die IM Stichwort.

Angenommen, Sie die Namen aller Kunden angezeigt werden soll, die das F-35 Produkt in den letzten 30 Tagen gekauft haben. Kundennamen sind in der Tabelle CUSTOMER und Verkaufstransaktionsdaten in der TRANSACT Tabelle. Sie können die folgende Abfrage verwenden:

SELECT Vorname, LastNameFROM CUSTOMERWHERE CustomerID IN (SELECT CustomerIDFROM TRANSACTWHERE ProductID = 'F-35'AND TransDate> = (System - 30)) -

Das Innere WÄHLEN der TRANSACT Tisch Nester innerhalb der äußeren WÄHLEN der CUSTOMER-Tabelle. Das Innere WÄHLEN findet der Kundennummer Nummern aller Kunden, die F-35 Produkt in den letzten 30 Tagen gekauft. die äußere WÄHLEN zeigt die Vor- und Nachnamen aller Kunden, deren Kundennummer wird durch die innere abgerufen WÄHLEN.

Menü