MySQL 链表中的外连接查询 主要包括 左外链接和右外连接
我们来用代码演示一下
首先 来看我们的两张表
staff 用户表
department 部门表
大家可以看到 这里我们赵敏员工绑定了 1号 开发部的外键 但2号张三并没有绑定任何外键 而部门表则只有1号开发部被用户关联了
这这种情况 如果用内连接查询 则 之后查到 他们的交集部分 就是 通过赵敏 查到开发部 而用户表中其他没有关联部门的数据 和 没有被关联的部门则不会 被查出来
外连接则解决了这个问题
比如 我们想查 用户表的全部数据 如果 用户表的某条数据关联了部门 则一起展示他的部门信息
则可以使用
select s.name,d.name from staff s left outer join department d on s.departmentid = d.id;
执行结果如下
这是一个很典型的左外链接查询 我们设置staff 用户表的别名为 s department 部门表 别名为d
我们查询的主要字段是 用户表的 name (用户名字段) 部门表单 name (部门名称字段)
我们设置左外连接查询 左表为 staff 用户表 以用户为条件查部门
这里 我们赵敏 有部门 就对应展示了开发部
而张三没有部门 则部门查出来的是null空
如果要根据部门查 也很简单
select s.name,d.name from staff s right outer join department d on s.departmentid = d.id;
运行结果如下
这就是右外连接 以右表为条件
因为之后开发部下有用户
所以 只有开发部对应了赵敏 其他的都是空的