1 笛卡爾積定義 設A,B為集合,用A中元素為第一元素,B中元素為第二元素構成的有序對,所有這樣的有序對組成的集合叫做A與B的笛卡爾積,記作AxB。 例如,A={a,b},B={0,1,2},則 AxB={a,o,a,1,a,2,b,0,b,1,b,2,} BxA={0,a,0,b,1,a,1,b,2,a,2,b} 2 交差聯接 交差
1 笛卡爾積定義
設A,B為集合,用A中元素為第一元素,B中元素為第二元素構成的有序對,所有這樣的有序對組成的集合叫做A與B的笛卡爾積,記作AxB。
例如,A={a,b},B={0,1,2},則
AxB={,,,,,,}
BxA={<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b>}
2 交差聯接
交差聯接是笛卡爾積在SQL中的實現,SQL中使用關鍵字“CROSS JOIN”來表示交差聯接。
例如:存在表tb_Class及表tb_Student,兩表擁有的數據如下圖所示。
對兩表進行交叉連接查詢:
<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:sql;">SELECT * FROM tb_Class a CROSS JOIN tb_Student b SELECT * FROM tb_Student c CROSS JOIN tb_Class d
得到以下查詢結果:
3 小知識
1) 交叉連接不能使用ON關鍵字,但可以使用WHERE子句定義連接條件。
SELECT * FROM tb_Class a CROSS JOIN tb_Student b WHERE a.classid=b.classid
SELECT * FROM tb_Class a ,tb_Student b WHERE a.classid=b.classid
所以,如果添加了WHERE子句,則交叉聯接的行為將與內部聯接行為相似。
2 )交叉連接返回的數據行數為第一個表中符合條件的數據行數乘以第二個表中符合條件的數據行數。
實例中的 tb_Class表有4行數據,tb_Student表有3行數據,所以返回的結果有12行。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com