2017-02-13 8 views
1

Ich versuche NOT IN mit einem WITH in T-SQL zu kombinieren. Aber ich kann es nicht zur Arbeit bringen. Ist es möglich?Sql - NICHT IN kombiniert mit

Beispiel:

select name 
    from Persons 
    where id NOT IN 
    (
     WITH result (numbers) 
     AS 
     (
      select number from num 
     ) 
     select numbers from result 
    ) 
+2

Das 'NOT IN' Ergebnis, wenn eine NULL zurückgegeben wird, ist ein wenig überraschend für viele Menschen. Deshalb empfehle ich normalerweise "NOT EXISTS" zu verwenden. – jarlh

+1

Ist es eine Übung, oder können Sie eine einfachere Methode anwenden? –

+2

Warum benutzen Sie 'WITH' überhaupt? – HoneyBadger

Antwort

4

Das WITH Schlüsselwort nicht innerhalb einer Unterabfrage verwendet werden kann, muss es vor der Hauptabfrage sein.

WITH result (numbers) 
AS 
(
    select number from num 
) 
select name 
from Persons 
where id NOT IN 
(
    select numbers from result 
) 
0

Ich weiß, dass Sie bereits die Antwort bekamen, will aber nur die alternative Art und Weise zeigen, dasselbe zu lösen, wenn jemand in der Zukunft interessiert ist.

SELECT name 
FROM Persons 
WHERE id NOT IN (select number from num) 
Verwandte Themen