sql中的笛卡爾積

2021-09-08 20:19:18 字數 463 閱讀 5759

我們對資料庫表進行操作時,經常會對多張表進行關聯,多表連線查詢大家肯定不會陌生,但是一不小心很容易出來龐大冗餘的資料。

笛卡爾積是指在數學中,兩個集合x和y的笛卡尓積(cartesian product),又稱直積,表示為x × y,第乙個物件是x的成員而第二個物件是y的所有可能有序對的其中乙個成員。

笛卡爾積又叫笛卡爾乘積,是乙個叫笛卡爾的人提出來的。 簡單的說就是兩個集合相乘的結果。 

假設集合a=,集合b=,則兩個集合的笛卡爾積為。

這樣冗餘的資料可不是我們想要,所以想要你的結果避免笛卡爾積,既要做到以下幾點:

1.關聯範圍在最小粒度的列。

2.如果是三張表連線,並且是1:n:n的關係,就要先關聯兩張表,然後將兩張表關聯的結果與第三表在進行關聯,這樣就可以取得我們想要的結果啦!多張表同理!

參考:

hive中的笛卡爾積

hive本身是不支援笛卡爾積的,不能用select t1.t2.from table 1,table 2這種語法。但有時候確實需要用到笛卡爾積的時候,可以用下面的語法來實現同樣的效果 select t1.t2.from select from table1 t1 join select from t...

hive中的笛卡爾積

hive本身是不支援笛卡爾積的,不能用select t1.t2.from table 1,table 2這種語法。但有時候確實需要用到笛卡爾積的時候,可以用下面的語法來實現同樣的效果 select t1.t2.from select from table1 t1 join select from t...

避免笛卡爾積

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