これらのスクリプトは、CROSSは
SELECT * FROM
(select x = null) x
OUTER APPLY
(select x = 1) y
SELECT * FROM
(select x = null) x
CROSS APPLY
(select x = 1) y
私に同じ結果を与える適用OUTERに比べて適用されるのと同じCROSS APPLY
とOUTER APPLY
ていますか?
同じ結果が返されない状況の例がありますか?
これらのスクリプトは、CROSSは
SELECT * FROM
(select x = null) x
OUTER APPLY
(select x = 1) y
SELECT * FROM
(select x = null) x
CROSS APPLY
(select x = 1) y
私に同じ結果を与える適用OUTERに比べて適用されるのと同じCROSS APPLY
とOUTER APPLY
ていますか?
同じ結果が返されない状況の例がありますか?
区別をわかりやすくするために、INNER JOIN(CROSS)とLEFT JOIN(OUTER)を考えてください。 CROSSは、適用された関数が結果セットを戻す外部表から行のみを戻します。 OUTERは外部表からすべての行を戻します。
同じ結果が返されない状況があります。ちなみに、以前のテーブル/サブクエリと次のサブテーブルを関連付ける必要がある場合にのみ、APPLYを使用します。 OUTERが適用
SELECT x.x, y.x y
FROM (select [x] = 1) x
OUTER APPLY (select [x] = 1 where x.x is null) y
-- result
1, null
SELECT x.x, y.x y
FROM (select [x] = 1) x
CROSS APPLY (select [x] = 1 where x.x is null) y
-- result
(empty result set)
何
OUTER JOINをする
1が適用さJOINのINNERにアプライ交差しているだけで、以前に定義された列を使用することができるというの参加です。 – usr