mysql 的多表連線

2021-10-05 08:40:33 字數 763 閱讀 9047

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 join b on 條件;

查詢結果是左邊的表a的全部資訊和a,b兩張表的交集

⚠️如果是select * from a left outer join b on 條件 where 條件1; 因為a 有 b沒有的字段 會以null 補充,所以後面如果再帶where 條件時,一般null 都不符合條件1,所以查出的結果很可能造成資料缺失

⚠️on 條件中如果有對左表的限制條件,無論條件真假,依然返回左表的所有行,但是會影響右表的匹配值。也就是說on中左表的限制條件只影響右表的匹配內容,不影響返回行數

⚠️on 和 where 的前後順序。如果where 在前是先篩選後連線; 如果where 在後 是先連線後篩選

這裡參考:

3.2 右外連線:select * from a right outer join b on 條件;

查詢結果是右邊的表b的全部資訊和a,b兩張表的交集

ps:今天被問到表連線注意什麼?我他媽哪知道他要的是問這個,真的是全場懵逼!!

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 分為三種 交叉連線 內連線 外...

MySQL多表連線

建兩個表,其中address是user info的位址表 user info表 create table user info id int 2 primary key,user name varchar 12 unique,password varchar 15 not null,real name...