前言
本節(jié)開始我們進(jìn)入聯(lián)接學(xué)習(xí),關(guān)于連接這一塊涉及的內(nèi)容比較多,我們一步一步循序漸進(jìn)學(xué)習(xí),簡短內(nèi)容,深入的理解,Always to review the basics。
交叉聯(lián)接(CROSS JOIN)
交叉連接是最簡單的聯(lián)接類型。交叉聯(lián)接僅執(zhí)行一個邏輯查詢處理階段-笛卡爾乘積。例如對兩個輸入表進(jìn)行操作,聯(lián)接并生成兩個表的笛卡爾乘積,也就是說,將一個表的每一行與另一個表的所有行進(jìn)行匹配。所以,如果一個表有m行,另一個表有n行,得到的結(jié)果中則會有m*n行。我們就拿SQL Server 2012教程中的例子說下
SELECT C.custid, E.empid FROM Sales.Customers AS C CROSS JOIN HR.Employees AS E ORDER BY E.empid
在Sales.Customers表中有91行數(shù)據(jù),HR.Employees表中有9行數(shù)據(jù),則利用交叉聯(lián)接數(shù)據(jù)則有819(91*9)行數(shù)據(jù),簡略數(shù)據(jù)如下。
交叉聯(lián)接我們可以用如下圖表示
交叉聯(lián)接最大的用途在于生成數(shù)字表以便我們用于其他目的,我們一起來看看。
IF OBJECT_ID('dbo.Digits','U') IS NOT NULL DROP TABLE dbo.Digits; CREATE TABLE dbo.Digits ( digit INT NOT NULL );