mysql中內連線和外連線on後的條件何時生效說明

2021-08-09 15:42:58 字數 1642 閱讀 9760

工作中,由於看到錯誤使用的外連線後on的條件,所以寫此文章進行總結.

1.首先建立使用者表t_user,手機號表t_phone.

#建立使用者表

create table t_user(

user_id varchar(36) primary key comment'主鍵id',

user_name varchar(255) comment '使用者姓名',

d tinyint(2) default 0 comment '刪除標識:0-表示未刪除,1-表示刪除'

) engine=innodb default charset=utf8;

#建立手機號表

create table t_phone(

id varchar(36) primary key comment'主鍵id',

phone_number varchar(11) comment'手機號',

user_id varchar(36) comment '使用者id',

d tinyint(2) default 0 comment '刪除標識:0-表示未刪除,1-表示刪除'

) engine=innodb default charset=utf8;

2.給表中插入資料.

#使用者表插入資料

insert into t_user(user_id,user_name,d)values(uuid(),'張三',0);#1ae72fe7-b6e8-11e7-b728-222222222222

insert into t_user(user_id,user_name,d)values(uuid(),'李四',1);#1af5ec06-b6e8-11e7-b728-222222222222

insert into t_user(user_id,user_name,d)values(uuid(),'王五',0);#1b045552-b6e8-11e7-b728-222222222222

#手機號表插入資料

insert into t_phone(id,phone_number,user_id,d)values(uuid(),'13678547895','1ae72fe7-b6e8-11e7-b728-222222222222',0);

insert into t_phone(id,phone_number,user_id,d)values(uuid(),'12278547895','1ae72fe7-b6e8-11e7-b728-222222222222',1);

3.寫連線查詢sql進行驗證.

#使用者表做外連線手機號表

select

*from t_user tu

left join t_phone tp on tp.user_id=tu.user_id and tu.d=0;#通過結果可知主表t_user的d=0條件沒有生效

select

*from t_user tu

left join t_phone tp on tp.user_id=tu.user_id and tp.d=0;#通過結果可知副表t_phone的d=0條件生效

4.結論:對於外連線而言,on後的只是屬於主表的條件不會生效,要想生效,需要放置到where 條件後;對於inner join由於不存在主副表的概念,on後的條件都會生效(inner join請用本例的表自行進行驗證).

mysql內連線和外連線

testa表 idname class1張三 a2李四b 3王五ctestb表 class ageb10c 20d30內連線實際上就是交集,顯示符合匹配條件的資料 select testa.testb.from testa inner join testb on test.class testb.c...

MySQL中的內連線和外連線

總結雖然開發中經常用到mysql,但是感覺很多關於mysql的相關知識仍然不太理解,比如mysql的內連線和外連線,我理解的連線,就是在進行多表查詢使用相關聯的條件將多表聯絡起來,並根據條件查詢各表中的和條件有關的全部內容或部分內容。根據如下sql語句執行,準備兩張表beauty和boys crea...

Mysql表連線,內連線和外連線

當需要同時顯示多個表中的字段時,就可以用表連線來實現這樣的功能,從大類上來分,連線分為內連線和外連線 內連線僅選出需要連線表中相互匹配的記錄 外連線會選出連線表中不匹配的記錄 外連線分為左連線和右連線 左連線 包含所有左表中的記錄,甚至是右表中沒有和它匹配的記錄 右連線 包含所有右表中的記錄,甚至是...