You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析Employee表上两个自INNER JOIN SQL查询的差异

自内连接查询的差异解析

员工表(Employee table)

idnamesalarymanagerId
1Joe700003
2Henry800004
3Sam60000Null
4Max90000Null

以下两个针对Employee表的自INNER JOIN查询有什么差异?

第一个查询

SELECT E.name as Employee
FROM Employee as E
INNER JOIN Employee as E2
ON E.id = E2.managerId

该查询返回:Sam、Max

第二个查询

SELECT E.name as Employee
FROM Employee as E
INNER JOIN Employee as E2
ON E.managerId = E2.id

该查询返回:Joe、Henry


核心差异说明

这两个查询的本质区别是自连接的关联条件方向完全相反,对应查询的角色定位不同:

  • 第一个查询中,E代表管理者,E2代表下属员工。关联条件E.id = E2.managerId是在筛选「存在下属的管理者」——也就是找那些id出现在其他员工managerId字段里的人,所以返回Sam和Max。
  • 第二个查询中,E代表普通员工,E2代表他们的管理者。关联条件E.managerId = E2.id是在筛选「有上级管理者的员工」——也就是找那些managerId不为空且对应存在管理者记录的人,所以返回Joe和Henry。

内容的提问来源于stack exchange,提问作者Sourabh Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:15:05