SQL查询需求:展示当前用户及其替代者的工作信息
修正后的SQL语句及解释
需求明确
需要查询两类员工的工作信息:
- 当前用户(示例中EmpID为
0001)本人的工作 - 所有将当前用户设为替代者(
EmpSub = '0001')的员工的工作
修正后的SQL语句
SELECT j.JobID, j.JobDescr, e.EmpName FROM Jobs j INNER JOIN Employees e ON j.EmployeeID = e.EmpID WHERE e.EmpID = '{USERID}' OR e.EmpSub = '{USERID}' ORDER BY j.JobID;
关键修正说明
- 修复SELECT语法错误:原语句中
JobDescr e.EmpName缺少逗号,修正为j.JobID, j.JobDescr, e.EmpName;为表添加别名(j代表Jobs,e代表Employees)提升可读性。 - 修正JOIN关联逻辑:原语句
Jobs = EmployeeID完全错误,正确关联应为j.EmployeeID = e.EmpID,将Jobs表的员工ID与Employees表的EmpID对应匹配。 - 调整WHERE筛选规则:通过
OR同时覆盖两类目标员工:e.EmpID = '{USERID}':匹配当前用户本人的工作记录e.EmpSub = '{USERID}':匹配把当前用户设为替代者的员工的工作记录
- 优化排序逻辑:仅按
JobID排序即可匹配期望结果的顺序,无需额外按EmployeeID排序。
结果验证(以USERID='0001'为例)
执行后将返回:
| JobID | JobDescr | EmpName |
|---|---|---|
| 1 | Job text | Name 5 |
| 3 | Job text | Name 3 |
| 5 | Job text | Name 1 |
完全符合你期望的查询结果。
内容的提问来源于stack exchange,提问作者Damien
相关产品推荐
相关产品推荐

