據我所知,至少在SQL Server中,我們不能使用集合中用於與該表連接的表中的別名。爲什麼別名限制加入集
在一個示例:
CREATE TABLE A (A1 int, A2 int)
CREATE TABLE B (B1 int, B2 int)
SELECT a.A2
FROM
A as a
INNER JOIN
(SELECT * FROM B as b WHERE b.B1=a.A1) b2 ON b2.B2=a.A2
該查詢將導致錯誤因爲別名一個在將被連接到該表的一組正在使用其中別名參閱(甲)。
在SQL Server中,這可以通過使用CROSS APPLY或可能通過重寫查詢來解決。 (這是不是我的問題)。
我的問題是:爲什麼這個限制存在?,爲什麼不讓讓別名使用SQL Server CROSS APPLY?
我的第一個猜測是:並行性。如果我們可以限制這一點,那麼每個似乎連接的集合總是可以並行計算並加入。但這只是一個猜測。它可以更靈活,讓我使用別名和加入集之間的計算依賴關係,我猜想CROSS APPLY。
也許沒有一個爲什麼:)
因爲'INNER JOIN'不是相關的子查詢。 – 2013-02-12 01:11:06