T-SQL "ANY (Unterabfrage)"

8

Ich habe eine Frage zum Any-Operator.

Auf Technet heißt es

  

Die folgende Abfrage findet beispielsweise Kunden in einem Gebiet, das nicht von Verkaufspersonen abgedeckt wird.

%Vor%

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.

    
Erik Mandke 03.10.2016, 15:39
quelle

3 Antworten

1
%Vor%

Wie Sie sehen können, hat T1 drei Werte

lasst uns jetzt sehen, wie Any Works

funktioniert

Wenn '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

sind %Vor%

Wenn Ihre Unterabfrage einen Wert zurückgibt, versucht die äußere Abfrage, Werte zu erhalten, die größer sind als die innere Abfrage

    
TheGameiswar 03.10.2016 16:03
quelle
1

<> ANY steht für Sales.Customer mit einer Gebiets-ID, die größer oder kleiner als eine der Gebiets-IDs in Sales.SalesPerson

ist

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.

    
JamieD77 03.10.2016 18:34
quelle
-1

Die folgende Abfrage hat das gleiche Ergebnis:

%Vor%     
Bouke 03.10.2016 15:58
quelle

Tags und Links