第6章_多表查询02

芳华梦落 2022-9-17 90 9/17

#1.所有有门派的人员信息
( A、B两表共有)

SELECT *
FROM t_emp a INNER JOIN t_dept b
ON a.deptId=b.id

#2.列出所有用户,并显示其机构信息
(A的全集)

SELECT *
FROM t_emp a LEFT JOIN t_dept b
ON a.deptId=b.id;

#3.列出所有门派
(B的全集)

SELECT *
FROM t_dept b;

#4.所有不入门派的人员
(A的独有)

SELECT *
FROM t_emp a
LEFT OUTER JOIN t_dept b
ON a.deptId=b.id
WHERE b.id IS NULL;

#5.所有没人入的门派
(B的独有)

SELECT *
FROM t_dept b
LEFT OUTER JOIN t_emp a
ON a.deptId=b.id
WHERE a.deptId IS NULL;

#6.列出所有人员和机构的对照关系
(AB全有)

#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的独有)

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;
- THE END -

芳华梦落

10月08日15:51

最后修改:2022年10月8日
0

非特殊说明,本博所有文章均为博主原创。