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

如何更新Driver表TripTotal列:按司机统计行程数并补0

解决Driver表TripTotal列按司机统计行程数的更新问题

你需要用LEFT JOIN结合分组统计来实现按司机单独计算行程数,同时用COALESCE处理无行程司机的0值显示。正确的SQL语句如下:

UPDATE d
SET TripTotal = COALESCE(t.trip_count, 0)
FROM Driver d
LEFT JOIN (
    -- 按司机ID分组统计每个司机的行程数量
    SELECT DRIVER_ID, COUNT(*) AS trip_count
    FROM Trip
    GROUP BY DRIVER_ID
) t ON d.ID = t.DRIVER_ID;

关键逻辑说明:

  • LEFT JOIN:确保Driver表中所有司机(包括无行程的ID=5)都能被匹配到,不会被过滤
  • 子查询分组:通过GROUP BY DRIVER_ID对Trip表按司机分组,单独统计每个司机的行程总数
  • COALESCE(t.trip_count, 0):当司机无对应行程时,子查询返回的trip_count为NULL,用该函数将NULL替换为0,满足无行程显示0的需求

你原有语句的问题:

你的SQL没有将Driver表和Trip表通过司机ID关联,也没有分组逻辑,子查询SELECT COUNT(Lnum) FROM TRIP只会统计Trip表的总行程数,导致所有司机的TripTotal都被设置为同一个总数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:20:55