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

SQL左连接查询问题:获取所有用户及骑行次数(含无骑行用户)

问题修正与解决方案

你的SQL语句存在两处关键错误,导致无法得到预期结果:

  • 关联条件错误:left join Rides B on (A.UserId = B.RideID) 误将Rides表的RideId作为关联字段,实际应关联UserId,即A.UserId = B.UserId
  • GROUP BY字段错误:group by A.idUser 中的字段名idUser与Users表的实际字段UserId不匹配

另外,原语句用count(B.RideId)会把未骑行用户的次数统计为0,而你期望返回NULL,需要调整统计逻辑。

符合预期的修正SQL:

SELECT 
    A.UserId,
    SUM(CASE WHEN B.RideId IS NOT NULL THEN 1 END) AS CountRides
FROM Users A WITH(NOLOCK)
LEFT JOIN Rides B ON A.UserId = B.UserId
GROUP BY A.UserId

说明:

  • SUM(CASE WHEN B.RideId IS NOT NULL THEN 1 END):有骑行记录时每条计1,求和得到总次数;无骑行记录时CASE返回NULL,SUM结果即为NULL,匹配你想要的输出。
  • 已修正关联条件和GROUP BY的字段名,确保逻辑正确。

如果希望未骑行用户的次数显示为0而非NULL,可直接使用COUNT(B.RideId),修正后的语句为:

SELECT 
    A.UserId,
    COUNT(B.RideId) AS CountRides
FROM Users A WITH(NOLOCK)
LEFT JOIN Rides B ON A.UserId = B.UserId
GROUP BY A.UserId

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:20:00