這些腳本給我同樣的結果CROSS APPLY相比OUTER APPLY
SELECT * FROM
(select x = null) x
OUTER APPLY
(select x = 1) y
SELECT * FROM
(select x = null) x
CROSS APPLY
(select x = 1) y
是CROSS APPLY
和OUTER APPLY
一樣嗎?
有沒有一個他們沒有返回相同結果的情況的例子?
這些腳本給我同樣的結果CROSS APPLY相比OUTER APPLY
SELECT * FROM
(select x = null) x
OUTER APPLY
(select x = 1) y
SELECT * FROM
(select x = null) x
CROSS APPLY
(select x = 1) y
是CROSS APPLY
和OUTER APPLY
一樣嗎?
有沒有一個他們沒有返回相同結果的情況的例子?
認爲INNER JOIN(用於CROSS)和LEFT JOIN(用於OUTER)使區分更易於理解。 CROSS只返回外部表中應用函數返回結果集的行。 OUTER返回外部表中的所有行。
這是他們不會返回相同結果的情況。順便說一下,當你需要將之前的表/子查詢與下一個表/子查詢關聯時,你才使用APPLY。
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 APPLY是CROSS APPLY什麼
OUTER JOIN是INNER JOIN
+1 APPLY只是一個連接能夠使用先前定義的列。 – usr