join主要根據兩表或多表之間列的關係,從這些表中進行資料的查詢。
1從上表插入的資料可知outman是沒有對應部門的。.tb_emp表。
droptable
ifexists
`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
ifexists
`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 ('
經理');
注: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查詢詳解
一般而言,如果要設計乙個小型資料庫 指 量少 但又要適應海量資料及訪問的效能需求,最有效的方法莫過於針對主要應用場景選擇乙個或幾個效能優異的核心演算法作為引擎,然後努力將一些非主要應用場景作為該演算法的特例或變種植入到引擎當中。mysql postgresql 等就是這麼做的。在 mysql 的 s...
mysql多表查詢方法(join)
表a記錄如下 aid anum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表b記錄如下 bid bname 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 200...
mysql優化子查詢 join
使用連線 join 來代替子查詢 sub queries mysql從4.1開始支援sql的子查詢。這個技術可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中。例如,我們要將客戶基本資訊表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售資訊表中將所有發出...