測試必備的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;