前言:該篇主要對mysql中join語句的七種情況進行總結。
join主要根據兩表或多表之間列的關係,從這些表中進行資料的查詢。
1.tb_emp表。
drop table if exists `tb_emp`;
create table `tb_emp` (
`id` int(11) not null auto_increment,
`name` varchar(20) not null,
`deptid` int(11) not null,
primary key (`id`),
key `idx_tb_emp_name` (`name`)
) engine=innodb default charset=utf8;
insert into `tb_emp`(name,deptid) values ('jack', '1');
insert into `tb_emp`(name,deptid) values ('tom', '1');
insert into `tb_emp`(name,deptid) values ('tonny', '1');
insert into `tb_emp`(name,deptid) values ('mary', '2');
insert into `tb_emp`(name,deptid) values ('rose', '2');
insert into `tb_emp`(name,deptid) values ('luffy', '3');
insert into `tb_emp`(name,deptid) values ('outman', '14');
2.tb_dept表。
drop table if exists `tb_dept`;
create table `tb_dept` (
`id` int(11) not null auto_increment,
`deptname` varchar(20) not null,
primary key (`id`)
) engine=innodb default charset=utf8;
insert into `tb_dept`(deptname) values ('研發');
insert into `tb_dept`(deptname) values ('測試');
insert into `tb_dept`(deptname) values ('運維');
insert into `tb_dept`(deptname) values ('經理');
從上表插入的資料可知outman是沒有對應部門的。
注:a表示左表,b表示右表,下同。
inner join:a、b共有,也就是交集。
left jion:a獨有+ab共有(交集)
right join:b獨有+ab共有(交集)
注:參照left join,a獨有只是將ab交集部分去掉。
注:參照right join,b獨有只是將ab交集部分去掉。
由於mysql中不支援full outer join,所以這裡通過union進行轉換。ab並集:ab交集+a獨有+b獨有。
a、b獨有並集,相當於a、b全有去掉ab的共有(交集)。
這裡主要對mysql中join語句的7中用法進行了總結,主要注意mysql不支援full outer join,所以需要對其進行轉換變形,最終達到效果。
by shawn chen,2018.6.21日,上午。
mysql高階知識系列目錄
MySQL高階知識(二) Join查詢
前言 該篇主要對mysql中join語句的七種情況進行總結。join主要根據兩表或多表之間列的關係,從這些表中進行資料的查詢。1.tb emp表。drop table if exists tb emp create table tb emp id int 11 not null auto incre...
MySQL高階知識1 多表查詢
當我們對多表進行聯查時,我們可以得到 表1 表2 的記錄數。例子 表1的 name 欄位和表2的 name 字段關聯 select from t1,t2 where t1.name t2.username 補充 如果兩個欄位不一樣,也可不帶表名作為字首。直接通過例子來看 例子 同一張表,查詢員工對應...
MySQL知識要點7 高階查詢
高階查詢 主要分為 關聯查詢 子查詢 聯合查詢 關聯查詢 主要包括內連線 外連線 自然連線 自連線 1 內連線 通用列欄位名稱必須一致,去除重複字段 關聯表 現的字段值最終才能出現在結果集中 內連線與連線順序無關,沒有主從表之分 select name,score from student,clas...