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

如何查询下属所有物业为INACTIVE但自身未标记INACTIVE的客户?

解决方案

下面提供几种不同的SQL查询写法,都能满足你的需求:

方法1:使用NOT EXISTS子查询

这种写法逻辑直观,先筛选出状态非INACTIVE的客户,再排除掉存在至少一个非INACTIVE物业的客户:

SELECT cd.*
FROM ClientData cd
WHERE cd.Status != 'INACTIVE'
  AND NOT EXISTS (
    SELECT 1
    FROM PropertyData pd
    WHERE pd.ClientID = cd.ClientID
      AND pd.Status != 'INACTIVE'
  );

方法2:GROUP BY + HAVING统计

通过关联客户和物业表,按客户分组后统计非INACTIVE物业的数量,数量为0则说明所有物业都是INACTIVE:

SELECT cd.*
FROM ClientData cd
JOIN PropertyData pd ON cd.ClientID = pd.ClientID
WHERE cd.Status != 'INACTIVE'
GROUP BY cd.ClientID, cd.Status -- 需根据数据库要求调整GROUP BY字段,确保包含SELECT中的非聚合列
HAVING COUNT(CASE WHEN pd.Status != 'INACTIVE' THEN 1 END) = 0;

方法3:LEFT JOIN排除法

左连接客户表与非INACTIVE的物业表,若连接结果中物业记录为空,说明该客户没有非INACTIVE的物业:

SELECT cd.*
FROM ClientData cd
LEFT JOIN PropertyData pd 
  ON cd.ClientID = pd.ClientID
  AND pd.Status != 'INACTIVE'
WHERE cd.Status != 'INACTIVE'
  AND pd.ClientID IS NULL;

补充说明

如果需要排除没有任何物业的客户,可以在上述查询的WHERE条件中添加:

AND EXISTS (SELECT 1 FROM PropertyData pd WHERE pd.ClientID = cd.ClientID)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:30:52