Ich habe eine Frage zum Any-Operator.
Auf Technet heißt es
%Vor%Die folgende Abfrage findet beispielsweise Kunden in einem Gebiet, das nicht von Verkaufspersonen abgedeckt wird.
Weiter
Die Ergebnisse umfassen alle Kunden, mit Ausnahme derer, deren Verkaufsgebiete NULL sind, da jedes Gebiet, das einem Kunden zugeordnet ist, von einem Verkäufer abgedeckt wird. Die innere Abfrage findet alle Verkaufsgebiete, die von Verkaufspersonen abgedeckt werden, und dann findet die äußere Abfrage für jedes Gebiet die Kunden, die sich nicht in einem befinden.
Aber diese Abfrage gibt alle Kunden zurück. Ich habe die Regions-ID eines Kunden auf einen Wert aktualisiert, den keine sales.person hat, aber diese Abfrage gibt immer noch alle Kunden zurück, anstelle des erwarteten.
Vermisse ich etwas? Könnte es sein, dass dieser Artikel auf technet einfach falsch ist? Ссылка (deutsch)
Es gibt einen Kunden mit TerritoryID = 13
Inneres Abfrageergebnis (SELECT TerritoryID FROM Sales.SalesPerson): 4 2 4 3 6 5 1 4 6 1 1 6 9 1 8 10 7
Und in der Tabelle Sales.Customer ist eine Zeile mit CustomerID = 13, die nicht von einem Verkäufer abgedeckt wird.
Wie Sie sehen können, hat T1 drei Werte
lasst uns jetzt sehen, wie Any Works
funktioniertWenn 'ist gleich' mit irgendeinem verwendet wird, funktioniert es wie IN
%Vor% wenn Any
mit & gt; oder & lt; & gt; , Any
bedeutet, dass Sie alle Werte erhalten, die größer als der Minimalwert
Wenn Ihre Unterabfrage einen Wert zurückgibt, versucht die äußere Abfrage, Werte zu erhalten, die größer sind als die innere Abfrage
<> ANY
steht für Sales.Customer mit einer Gebiets-ID, die größer oder kleiner als eine der Gebiets-IDs in Sales.SalesPerson
So TerritoryID = 13
ist größer als alle oder Ihre Beispiele (4 2 4 3 6 5 1 4 6 1 1 6 9 1 8 10 7)
, also ist es enthalten.
<> ALL
ist das Äquivalent von NOT IN
, also verwirren Sie <> ANY
mit
Sehen Sie sich <> ANY
an, wenn es Datensätze in der Menge gibt, die nicht dem Quailifier entsprechen, und schließen Sie sie ein.
Tags und Links sql-server