mysql常见7种join
1 所有有门派的人员信息
( A、B两表共有 图中3)
select * from t_emp a inner join t_dept b on a.deptId = b.id;
2 列出所有用户,并显示其机构信息
(A的全集 图中1)
select * from t_emp a left join t_dept b on a.deptId = b.id;
3 列出所有门派
(B的全集 图中2)
select * from t_dept b
4 所有不入门派的人员
(A的独有 图中1a)
select * from t_emp a left join t_dept b on a.deptId = b.id where b.id is null;
5 所有没人入的门派
(B的独有 图中2a)
select * from t_dept b left join t_emp a on a.deptId = b.id where a.deptId is null;
6 列出所有人员和机构的对照关系
(AB全有 图中4)
#MySQL Full Join的实现 因为MySQL不支持FULL JOIN,下面是替代方法
#left join + union(可去除重复数据)+ right join
SELECT * FROM t_emp A LEFT JOIN t_dept B ON A.deptId = B.id
UNION
SELECT * FROM t_emp A RIGHT JOIN t_dept B ON A.deptId = B.id
7 列出所有没入派的人员和没人入的门派
(A的独有+B的独有 图中4a)
SELECT * FROM t_emp A LEFT JOIN t_dept B ON A.deptId = B.id WHERE B.id
IS NULL
UNION
SELECT * FROM t_emp A RIGHT JOIN t_dept B ON A.deptId = B.id WHERE A.deptId
IS NULL;