6

次のクエリが機能します。

select count(*) from everything where num not in (select num from sometable)

次のクエリは上記と同等であると想定されていますが、「無効な識別子」エラーが発生します。

with unwanted as (select num from sometable)
select count(*) from everything where num not in unwanted

2番目のクエリの何が問題になっていますか?

4

2 に答える 2

7

構文は次のようになります。

with unwanted as (select num from sometable)
select count(*) from everything where num not in (select * from unwanted)

明らかにこれは、select num from sometableパーツがもう少し複雑であるか、後で数回使用される場合にのみ意味があります...

于 2012-10-02T14:40:18.257 に答える
2

テーブルを結合してパフォーマンスを向上させることもできます

WITH unwanted
AS
(
    SELECT  num 
    FROM    sometable
)
SELECT  COUNT(*)
FROM    everything a
        LEFT JOIN unwanted b
            ON a.num = b.num
WHERE   b.num IS NULL
于 2012-10-02T14:44:40.350 に答える