笛卡爾積與交叉聯接

2022-04-11 06:31:39 字數 774 閱讀 4325

1 笛卡爾積定義

設a,b為集合,用a中元素為第一元素,b中元素為第二元素構成的有序對,所有這樣的有序對組成的集合叫做a與b的笛卡爾積,記作axb。

例如,a=,b=,則

axb=

bxa=

2 交差聯接

交差聯接是笛卡爾積在sql中的實現,sql中使用關鍵字「cross join」來表示交差聯接。

例如:存在表tb_class及表tb_student,兩表擁有的資料如下圖所示。

對兩表進行交叉連線查詢:

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行。

避免笛卡爾積

在mysql中建立臨時表 create table temptable 2 instanceid numeric 30 celltype varchar 128 enodeb id numeric 30 eutrancell id numeric 30 engine myisam default c...

js笛卡爾積

可以用來模擬路徑,或者標籤的順序。笛卡兒積組合 function descartes list var result var pindex null var tempcount 0 var temp 根據引數列生成指標物件 for var index in list pindex index 單維度...

笛卡爾積 LintCode

我們採用二維陣列setlist表示集合陣列,其中setlist i 中的每個元素都為整數,且不相同。求集合setlist 0 setlist 1 setlist setlist.length 1 的笛卡爾積。一般地,集合a和集合b的笛卡爾積a b 注意事項 1 setlist.length 5 1 ...