日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
數(shù)據(jù)庫開發(fā)應(yīng)知應(yīng)會(huì)之笛卡爾積

 本文轉(zhuǎn)載自微信公眾號(hào)「活在信息時(shí)代」,作者活在信息時(shí)代。轉(zhuǎn)載本文請(qǐng)聯(lián)系活在信息時(shí)代公眾號(hào)。

很多數(shù)據(jù)庫開發(fā)人員都聽說過笛卡爾積的概念,也可能偶爾碰上過因?yàn)镾QL語句或者數(shù)據(jù)表數(shù)據(jù)問題而產(chǎn)生的笛卡爾積問題。但是很多人對(duì)于笛卡爾積產(chǎn)生的原因和如何避免還是有些一知半解。所以我們今天就簡單明了地給大家介紹一下什么情況下會(huì)產(chǎn)生笛卡爾積問題,以及如何避免。

一、什么是笛卡爾積

笛卡爾積是指在數(shù)學(xué)中,兩個(gè)集合X和Y的笛卡尓積(Cartesian product),又稱直積,表示為X × Y,第一個(gè)對(duì)象是X的成員而第二個(gè)對(duì)象是Y的所有可能有序?qū)Φ钠渲幸粋€(gè)成員。

假設(shè)集合A={a, b}有兩個(gè)元素,集合B={0, 1, 2}有三個(gè)元素,則兩個(gè)集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}有2*3為6個(gè)元素。

在SQL查詢語句中,出現(xiàn)笛卡爾積的情況都是出現(xiàn)在關(guān)聯(lián)查詢上,具體包括下面兩種。我們以下面兩張表為例,給大家介紹一下。

第一張表是雇員表:有20條數(shù)據(jù),如下圖:

第二張表為工資表:也有二十條數(shù)據(jù),如下圖:

二、數(shù)據(jù)表關(guān)聯(lián)查詢時(shí),如果連接沒有ON條件,會(huì)出現(xiàn)全部笛卡爾積

對(duì)于以上的兩張表,如果我們查詢

select * from employees, salary

結(jié)果為:

可以看出,一共出現(xiàn)了20*20=400條數(shù)據(jù)。即出現(xiàn)了全部笛卡爾積。

三、數(shù)據(jù)表關(guān)聯(lián)查詢時(shí),如果ON條件字段是非唯一字段,會(huì)出現(xiàn)部分笛卡爾積

以上面的數(shù)據(jù)為例,如果我們以ejob字段進(jìn)行連接的話,語句如下:

select * from employees, salary where employees.ejob=salary.ejob

結(jié)果為:

可以看出,由于ejob不是唯一字段,最終出現(xiàn)了36條結(jié)果,也就是出現(xiàn)了部分笛卡爾積。

四、如何才能不出現(xiàn)笛卡爾積的查詢結(jié)果

為避免出現(xiàn)查詢結(jié)果為笛卡爾積的冗余數(shù)據(jù)情況,應(yīng)該在連接查詢時(shí),使用唯一字段進(jìn)行連接。


當(dāng)前題目:數(shù)據(jù)庫開發(fā)應(yīng)知應(yīng)會(huì)之笛卡爾積
網(wǎng)站URL:http://www.5511xx.com/article/dhpsoec.html