SQL中笛卡爾積-cross join的用法


在數學中,笛卡爾乘積是指兩個集合XY的笛卡尓積(Cartesian product),又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員

假設集合A={a, b},集合B={0, 1, 2},則兩個集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

 

MySQL中笛卡爾積相當於我們學習數學中集合的概念,數據庫中運用此思想,產生了很多滿足我們實際需要的SQL語句。

語法:

 

SELECT * FROM [TABLE 1] CROSS JOIN [TABLE 2]

 

OR

 

SELECT * FROM [TABLE 1], [TABLE 2]  //重點,平時寫法要注意啊

 

 案例:

數據庫的數據有:

TEST_A表:                TEST_B表

 

 

select * from TEST_A a  CROSS JOIN  TEST_B b;

或者

select * from TEST_A a ,TEST_B b;

 

兩表直接笛卡爾積的結果數量是兩表的數據量相乘(列相加,行相乘)

 

帶where條件id相等的笛卡爾積:

 

select * from TEST_A a cross join TEST_B b where a.ID = b.ID;

 

 

 

inner join:

 

 

select * from TEST_A a inner join TEST_B b on a.ID = b.ID; 

 

 帶where條件id相等的笛卡爾積和inner join結果相同,但是inner join效率快一點

 

left join:

 

select * from TEST_A a left join TEST_B b on a.ID = b.ID; 

 

right join:

 

select * from TEST_A a right join TEST_B b on a.ID = b.ID; 

left join:TEST_A表的ID為空時拼接TEST_B表的內容為空,right join則相反

 

full join:

 

select * from TEST_A a full join TEST_B b on a.ID = b.ID;

full join:等於left join和right join的並集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM