SQL自连接查询结果不符求助:如何正确关联员工与经理?
解决SQL自连接查询员工与经理姓名的问题
原查询的核心问题是连接条件逻辑颠倒,并且使用普通JOIN会丢失无经理的员工记录,调整方式如下:
正确查询语句
SELECT uno.name AS employee, dos.name AS manager FROM `dataset.workers` AS uno LEFT JOIN `dataset.workers` AS dos ON uno.manager_id = dos.id
逻辑说明
- 把
uno.id = dos.manager_id改为uno.manager_id = dos.id:员工表(uno)的manager_id对应经理表(dos)的id,这才是正确的关联关系,能匹配到员工对应的经理。 - 使用
LEFT JOIN而非普通JOIN:确保即使员工没有经理(比如Joe的manager_id为NULL),这条记录也会被保留,经理字段显示NULL。
执行结果
| employee | manager |
|---|---|
| Mike | Joe |
| Kate | Joe |
| Joe | NULL |
内容的提问来源于stack exchange,提问作者ppp147
相关产品推荐
相关产品推荐

