前言
本節(jié)開(kāi)始我們進(jìn)入聯(lián)接學(xué)習(xí),關(guān)于連接這一塊涉及的內(nèi)容比較多,我們一步一步循序漸進(jìn)學(xué)習(xí),簡(jiǎn)短內(nèi)容,深入的理解,Always to review the basics。
交叉聯(lián)接(CROSS JOIN)
交叉連接是最簡(jiǎn)單的聯(lián)接類型。交叉聯(lián)接僅執(zhí)行一個(gè)邏輯查詢處理階段-笛卡爾乘積。例如對(duì)兩個(gè)輸入表進(jìn)行操作,聯(lián)接并生成兩個(gè)表的笛卡爾乘積,也就是說(shuō),將一個(gè)表的每一行與另一個(gè)表的所有行進(jìn)行匹配。所以,如果一個(gè)表有m行,另一個(gè)表有n行,得到的結(jié)果中則會(huì)有m*n行。我們就拿SQL Server 2012教程中的例子說(shuō)下
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ù),簡(jiǎn)略數(shù)據(jù)如下。
交叉聯(lián)接我們可以用如下圖表示
交叉聯(lián)接最大的用途在于生成數(shù)字表以便我們用于其他目的,我們一起來(lái)看看。
IF OBJECT_ID('dbo.Digits','U') IS NOT NULL DROP TABLE dbo.Digits; CREATE TABLE dbo.Digits ( digit INT NOT NULL );
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式