在資料庫進行多張表的查詢,必定會用到多表關聯,只要是多表關聯,就會產生笛卡兒積(什麼是笛卡兒積:最簡單的解釋,就是你要關聯的每張表總記錄的乘積),所以一定要寫關聯條件。關聯條件就是在所產生的笛卡兒積之間篩選資料。
多表連線主要分為:inner join與outer join
實驗:table_atable_b
id value id value
1 va1 1 vb1
2 va2 3 vb3
4 va4 4 vb4
inner join(也可直接用,號替代,後加where關聯條件),用on來關聯條件。只查詢滿足關聯條件的資料,結果集小於等於兩表之間記錄行數的最小值
1 select * from table_a t,table_b t1 where t.id=t1.id;23 select * from table_a t inner join table_b t1 on t.id=t1.id;
id value id value
1 va1 1 vb1
4 va4 4 vb4
outer join
left (outer) join:已左邊表的記錄為基準,右邊表中找不到則補null。結果集等於左表記錄的行數
1 select * from table_a t left join table_b t1 on t.id=t1.id;
id value id value1 va1 1 vb1
2 va2 null null
4 va4 4 vb4
right (outer) join:已右邊表的記錄為基準,左邊表中找不到則補null。結果集等於右表記錄的行數
1 select * from table_a t right join table_b t1 on t.id=t1.id;
id value id value1 va1 1 vb1
null null 3 vb3
4 va4 4 vb4
mysql 的多表連線
1 select from a b 預設是笛卡爾積 2 內連線 兩者一樣 顯示內連線 select from a inner join b on 條件 隱式內連線 select from a,b where 條件 3 外連線 3.1 左外連線 select from a left outer joi...
mysql多表連線
現有表r,s如下 select from r,s 結果 注 不需要任何條件。結果為兩張表函式相乘 3x3 9 自連線 select e.empno,e.ename,m.empno,m.ename from emp e,emp m where m.mgr e.empno 分為三種 交叉連線 內連線 外...
mysql 多表連線
現有表r,s如下 select from r,s 結果 注 不需要任何條件。結果為兩張表函式相乘 3x3 9 自連線 select e.empno,e.ename,m.empno,m.ename from emp e,emp m where m.mgr e.empno 分為三種 交叉連線 內連線 外...