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

SQL查询D0001医生相关病假数据返回错误医生姓名问题求助

问题根因分析

你写的SQL存在两个核心问题导致医生姓名错误、结果不符合要求:

  1. 多表关联缺少关联条件,产生笛卡尔积
    你用逗号连接DOCTORS表和EMPLOYEES表,但没有建立DOCTORS表和EMPLOYEE_SICKLEAVE表的关联逻辑,缺少D.DOCTOR_ID = e.DOCTOR_ID的匹配条件,会生成两张表的全量笛卡尔积,导致医生姓名和审批记录完全匹配混乱。
  2. 排序逻辑错误,无法取到病假天数最多的员工
    你当前ORDER BY是按员工名、员工姓排序,TOP(1)取到的是排序后最靠前的员工,而非病假天数最多的员工。

修正后的查询语句

SELECT TOP(1) 
    emp.EMPLOYEE_NAME, 
    emp.EMPLOYEE_SURNAME, 
    d.DOCTOR_NAME, 
    MAX(e.NUMBER_OF_DAYS) AS NUMBER_OF_DAYS
FROM DOCTORS d
-- 明确关联医生表和病假表,保证医生ID匹配
JOIN EMPLOYEE_SICKLEAVE e ON d.DOCTOR_ID = e.DOCTOR_ID
JOIN EMPLOYEES emp ON emp.EMPLOYEE_ID = e.EMPLOYEE_ID
WHERE d.DOCTOR_ID = 'D0001'
GROUP BY emp.EMPLOYEE_NAME, emp.EMPLOYEE_SURNAME, d.DOCTOR_NAME
-- 按病假天数倒序,取TOP1就是天数最多的记录
ORDER BY NUMBER_OF_DAYS DESC

内容的提问来源于stack exchange,提问作者PureWare -Legends Of Gaming

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:06:04