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

使用WHERE子句统计各省INACTIVE客户数总是查询无结果如何解决

原问题(翻译)

需要统计每个省份的非活跃(INACTIVE)客户数量,但是每次在WHERE子句设置过滤条件后,查询都会返回“无查询结果”,原查询语句如下:

SELECT a.province, count(t.customer_id) as total_customer_on_each_province
FROM total_customer t
LEFT JOIN last_address a on a.customer_id = t.customer_id
WHERE t.status = 'INACTIVE'
GROUP BY province
排查与解决方法
  • 第一步先验证total_customer表是否存在状态为INACTIVE的客户,直接执行以下查询:
SELECT COUNT(*) AS inactive_count FROM total_customer WHERE status = 'INACTIVE';

如果返回结果为0,说明要么当前确实没有非活跃客户,要么status字段的实际值和你写的过滤条件不匹配,常见不匹配场景包括:

  • 值的大小写不一致:例如实际存储的是inactive、Inactive而非全大写的INACTIVE
  • 值携带多余空格:例如存储的是INACTIVE 末尾带有空白字符
  • 字段类型不匹配:例如status是数值类型,用0代表非活跃,你用字符串'INACTIVE'过滤自然无法匹配
  • 字段名拼写错误:确认状态字段的实际名称是否为status,有没有可能是cust_status之类的其他命名
  • 如果上述查询返回结果大于0,说明过滤条件本身可以匹配到数据,再检查关联逻辑:你的原SQL用total_customer做主表左连地址表,只要主表有符合条件的行,就算没有匹配的地址数据,也会返回province为NULL的统计行,不会完全无结果,因此基本可以定位问题出在status的过滤条件匹配上。

如果你需要同时统计「没有非活跃客户的省份,显示数量为0」,可以调整查询逻辑,把地址表设为左连主表,状态过滤写在关联条件中,参考语句:

SELECT a.province, COUNT(t.customer_id) as total_inactive_customer
FROM last_address a
LEFT JOIN total_customer t 
  ON a.customer_id = t.customer_id
  AND t.status = 'INACTIVE'
GROUP BY a.province

内容的提问来源于stack exchange,提问作者Kalisa Fitri Ramadhanti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:27:03