Mysql常用sql語句(15)- cross join 交叉連接


測試必備的Mysql常用sql語句

https://www.cnblogs.com/poloyy/category/1683347.html

 

前言

  • 交叉連接就是求多表之間的笛卡爾積
  • 講道理..這個我都不怎么常用..因為能用到的地方太少了;但還是要介紹的啦

 

啥是笛卡爾積

這屬於數學的內容,不介紹概念,直接看栗子來知道吧!

假設,有兩個集合A、B

A = {1,2}
B = {3,4}

集合A和集合B的笛卡爾積 = 集合A * 集合B;即,兩表相乘,如下:

AxB = {(1,3),(1,4),(2,3),(2,4)}
  • 在Mysql中,表與表之間的笛卡爾積不建議使用,會產生大量不合理的數據;
  • 假設兩張表各有100條記錄,那么表與表的笛卡爾積的數據量就有100*100=10000條了...

 

cross join 的語法格式

SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE]
SELECT <字段名> FROM <表1>, <表2> [WHERE子句] 

 

先看看dept、emp表有什么數據

dept表

emp表

 

cross join單獨使用的栗子

select * from emp cross join dept;

總記錄數 = emp記錄數(9) * dept記錄數(4) = 36

cross join + where 的栗子

select * from emp as a cross join dept as b on a.dept_id = b.id;

 


免責聲明!

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



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