MySQL多表查询之(自连接)

自连接顾名思义 就是表自己链接自己进行查询

场景可能相对特殊一点
我们向来看一张User_List用户表
在这里插入图片描述
这里 每个员工存了一个superior_id 但他并不是其他表单外键 而是关联的本表的数据
这个id是存的自己上级的id
例如 王晓峰 和 黄晓菲 都没有上级id 因为他们一个总监 一个总经理
然后 孟悠则是一个部门的部门经理 他的上级是 总经理 所以 他的superior_id就是1 对应总经理的id
依次类推 两个组长的上级就是 部门负责人 存了superior_id3

然后 如果我们想查员工 和他上级
我们就可以这样写

select * from user_list a,user_list b where a.superior_id = b.user_id;

运行结果如下
在这里插入图片描述
看一看到 前面两条没有上级id的数据 就被过滤掉了 他不会找没有关联的数据

然后 孟悠 带出了上级 总经理 王晓峰
吴浩带出了上级 孟悠
钟侣带出了上级 孟悠

然后我们来优化一下 只要下属和上级的名字

select a.user_name,b.user_name from user_list a,user_list b where a.superior_id = b.user_id;

运行结果如下
在这里插入图片描述
没有任何问题

大家不难开出 虽然查到都是user_list表 但我们给了两个别名 分别是 a和b 此时 我们就要把a和b看成两个表来写sql

自连接 也有自左和自右链接

select a.user_name,b.user_name from user_list a left join user_list b on a.superior_id = b.user_id;

在这里插入图片描述
和左外右外是一样的用法 只是一个是连别的表 一个是连自己
不了解外连接的可以观看我的文章
https://blog.csdn.net/weixin_45966674/article/details/127336554?spm=1001.2014.3001.5502

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/127351544
今日推荐