2017-02-13 7 views
1

私はNOT INをT-SQLのWITHと組み合わせようとしています。しかし、それを働かせることはできません。出来ますか?Sql - NOT IN combined WITH

例:WITHキーワードは、サブクエリ内では使用できません

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

NULLが返されたときの「NOT IN」の結果は、多くの人にとって驚くべきことです。だから、私は通常、代わりに 'NOT EXISTS'を使うことを勧めます。 – jarlh

+1

これは練習ですか、もっと簡単な方法を適用できますか? –

+2

なぜ「WITH」を使用していますか? – HoneyBadger

答えて

4

、それがメインクエリの前にする必要があります。

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

私はあなたが既に答えを得たが、知っているだけで、誰かが将来的に興味を持っている場合、同じを解決するための別の方法を示したいと思います。

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