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

如何显示处理0次预约的员工记录?SQL查询优化求助

如何统计所有员工的预约数量(包含0次预约的员工)

你的问题出在当前查询用了隐式内连接,这种连接只会返回两个表中匹配关联条件的记录,所以没有预约的员工会被过滤掉。要显示所有员工(包括0次预约的),需要改用左外连接(LEFT JOIN),具体修改如下:

修改后的SQL语句

SELECT 
    S.id Staff_ID,
    S.name Staff_Name,
    COUNT(A.id) TOTAL_COUNTS
FROM Staffs S
LEFT JOIN Appointments A ON S.id = A.staffId
GROUP BY S.id, S.name
ORDER BY TOTAL_COUNTS DESC;

关键修改点说明

  • 用LEFT JOIN替代原来的隐式内连接:左连接会保留左表(Staffs)的所有记录,即使右表(Appointments)没有匹配的关联记录
  • 将关联条件S.id = A.staffId从WHERE子句移到ON子句:如果放在WHERE里,会把左连接产生的NULL记录过滤掉,效果和内连接一致
  • COUNT(A.id)会自动统计有效预约数:当没有匹配的预约记录时,A.id为NULL,COUNT会忽略NULL值,最终返回0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:01:13