7種join理論
實際操作
select a.*,b.name as rolename from `users` a left join `roles` b on b.id=a.role_id
查詢使用者擁有的許可權
select * from role_node as a left join `nodes` as b on a.node_id=b.id where a.role_id=(select role_id from `users` where `id`=4)
或者select c.name from `users` a left join `role_node` b on a.role_id=b.role_id left join `nodes` as c on b.node_id=c.id where a.id=4 ;
在實際開發中
最常用的就是left join
其次right join、inner join
內連線(兩表的共有部分)
select * from tbl_dep d inner join tbl_emp e on d.id
=e.deptid
;
左連線(左表的全部,右表不滿足補null)
select * from tbl_dep d left join tbl_emp e on d.id
=e.deptid
;
右連線(右表的全部,左表不滿足的補null)
select * from tbl_dep d right join tbl_emp e on d.id
=e.deptid
;
特殊的左連線,(顯示為左表的獨有的資料)
說明:查詢tbl_dep 表中跟tbl_emp 表無關聯關係的資料,即tbl_dep 獨佔,且tbl_emp 表的顯示列補null;
select * from tbl_dep d left join tbl_emp e on d.id
=e.deptid
where e.deptid
is null;
特殊的右連線(顯示為右表的獨有的資料 )
說明:查詢tbl_emp 表中跟tbl_dep 表無關聯關係的資料,即tbl_emp 獨佔,且tbl_dep 表的顯示列補null;
select * from tbl_dep d right join tbl_emp e on d.id
=e.deptid
where d.id
is null;
全連線(顯示全部資料)(mysql 不支援 full outer join)
union :有去重的功能。
select * from tbl_dep d left join tbl_emp e on d.id
=e.deptid
union
select * from tbl_dep d right join tbl_emp e on d.id
=e.deptid
;
顯示兩表的獨有的資料
select * from tbl_dep d left join tbl_emp e on d.id
=e.deptid
where e.deptid
is null union
select * from tbl_dep d right join tbl_emp e on d.id
=e.deptid
where d.id
is null;
MySQL聯表查詢
顯示所有員工名字 emp.ename 員工工資 emp.sal 及所在部門的名字 dept.dname 笛卡爾積 emp num dept num 聯表查詢時一定要帶上關聯條件 select ename,sal,dname from emp,dept where emp.deptno dept.de...
MySQL聯表查詢及聯表刪除的方法
mysql聯表查詢及聯表刪除都是經常需要用到的操作,下面對mysql聯表查詢和聯表刪除都作了詳細的介紹分析,希望對您有所幫助。mysql聯表查詢 reference mysql manul 3.2.7.select語法13.2.7.1.join語法 13.2.7.2.union語法 eg1 mysq...
zf聯表查詢
zf支援聯表查詢,並且會經常遇到聯表查詢,具體 寫法如下 select this select select from this name,array id name select distinct select joinleft jobname,jobname.enterprise id this...