如何用SQL对比同表两行的两列值?员工表领导查询示例
如何通过SQL获取同一张表中员工对应的领导姓名?
你这个需求其实很好解决,因为领导的信息和员工一样都存在employee这张表里,我们只需要用**自连接(Self Join)**就能实现把员工和对应的领导关联起来。
先回顾下你的表结构和数据:
| id | e_name | leder_id |
|---|---|---|
| 1 | abc | 2 |
| 2 | def | 4 |
| 3 | ghi | 2 |
| 4 | jkl | 1 |
| 5 | mno | 3 |
直接用下面的SQL语句就能得到你想要的结果:
SELECT e.e_name, l.e_name AS l_name FROM employee e INNER JOIN employee l ON e.leder_id = l.id;
简单解释下这段代码:
- 我们给同一张
employee表取了两个不同的别名:e用来指代员工,l用来指代领导 - 通过
e.leder_id = l.id这个关联条件,把每个员工的领导ID和领导的ID对应起来 - 最后选择员工姓名
e.e_name,并把领导的姓名l.e_name重命名为l_name,这样输出的结果就和你期望的一致了
执行这段SQL后,你会得到如下输出:
| e_name | l_name |
|---|---|
| abc | def |
| def | jkl |
| ghi | def |
| jkl | abc |
| mno | ghi |
内容的提问来源于stack exchange,提问作者Shubham Mishra
相关产品推荐
相关产品推荐

