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

使用SQL条件逻辑筛选仅含状态'f'的门店查询问题

原SQL错误原因

  • 过滤条件逻辑错误:仅包含status='f'的门店,按你的子查询计算规则,总和等于该门店的总记录数,比如只有1条f记录的门店sum结果为1,你写的SUM(status) > 1会把这类符合要求的门店直接过滤。
  • 别名冲突:子查询中计算列的别名status和原表字段重名,容易引发语义歧义。

可行解决方案

方案1:直接分组统计(最简洁)

统计每个门店下status='t'的记录数,为0则符合要求:

SELECT store, 'f' AS status
FROM your_table
GROUP BY store
HAVING COUNT(CASE WHEN status = 't' THEN 1 END) = 0

方案2:修正你原有逻辑的版本

调整HAVING过滤条件即可得到正确结果:

SELECT store, 'f' AS status
FROM (
      SELECT store,
             CASE 
                 WHEN status = 'f' THEN 1
                 WHEN status = 't' THEN -1 
             END AS status_flag
      FROM your_table) AS t
GROUP BY store 
HAVING SUM(status_flag) = COUNT(*)

方案3:NOT EXISTS 写法(逻辑最直观)

筛选有f记录且没有同门店t记录的门店:

SELECT DISTINCT store, 'f' AS status
FROM your_table t1
WHERE status = 'f'
AND NOT EXISTS (
    SELECT 1 FROM your_table t2 
    WHERE t2.store = t1.store AND t2.status = 't'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 03:24:04