创建SQL统计指标时IN条件内属性值不存在的问题咨询
问题影响及关联说明
一、现有查询的语法前置问题
你给出的SQL本身存在多处语法错误,执行时会直接报错,和Vacant值是否存在无关:
- 缺少
FROM子句指定查询的表名 - 字符串字面量
Active、Construction、Inspection、Leased、Trustee Occ/Eviction都没有加单引号包裹,会被数据库识别为字段名而非匹配值 - 字段名
Stage Name包含空格,需要用反引号/方括号/双引号包裹(不同数据库语法略有区别),否则会触发语法解析错误
修正后的基础语法参考:
SELECT COUNT(Fctpropertyunitsummarykey) FROM 你的业务表名 WHERE Propertystate = 'Active' AND `Stage Name` IN ('Construction','Inspection','Leased','Trustee Occ/Eviction', 'Vacant')
二、IN列表包含不存在的属性值的实际影响
修正语法后,Vacant值未出现在属性值集合中不会触发语法报错,只会导致以下业务逻辑层面的影响:
- 查询结果仅会匹配
Stage Name为前四个存在值的记录,Vacant的条件不会筛选出任何记录,不会对现有统计结果的正确性产生直接影响 - 若你预期后续
Vacant值会被加入属性值列表,该查询会自动包含后续新增的Vacant记录,无需修改查询语句 - 若你统计逻辑本就不需要包含
Vacant,该冗余条件不会影响结果,但会略微增加数据库的查询解析开销,建议移除避免后续维护人员误解统计口径
内容的提问来源于stack exchange,提问作者Rachel Benson
相关产品推荐
相关产品推荐

