T-SQL Part VII: CROSS JOIN

雖然不能確定是不是隻有個SQL Server提供了Cross Join的功能,貌似W3School的SQL教程中是沒有的 SQL教程。而Wikipedia中倒是有,也是最新的SQL:2011SQL:2011標準中才有。

對於CROSS JOIN,一言以蔽之,就是生成笛卡爾積(Cartesian Product)的。這是一個屬於線性代數範疇的數學概念,
具體可以參考Wikipedia上的詮釋或去翻《線性代數》(或者是《集合論》、《離散數學》等)的著作。

套用Wikipedia上的示例來闡述一下笛卡爾積:

A = {1,2}; B = {3,4}
A × B = {1,2} × {3,4} = {(1,3), (1,4), (2,3), (2,4)}
B × A = {3,4} × {1,2} = {(3,1), (3,2), (4,1), (4,2)}

MSDN上的文檔 對於CROSS JOIN有如下簡單至極的描述:

CROSS JOIN
Specifies the cross-product of two tables. Returns the same rows as if no WHERE clause was specified in an old-style, non-SQL-92-style join.

事實上,CROSS JOIN等同於沒有ON的JOIN。以下兩種SQL是等價的:

SELECT * FROM table1 CROSS JOIN table2 
SELECT * FROM table1, table2

是爲之記。
Alva Chien
2016.6.13

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章