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

如何查询pollerstatus表中所有rowstatus≠1的nodeid

解决方法:筛选所有rowstatus均不等于1的nodeid

你的需求是找出所有记录的rowstatus都不等于1的nodeid,原SQL的问题在于只统计了rowstatus≠1的记录数,但没有排除那些同时存在rowstatus=1的nodeid(比如1014)。以下是两种可行的解决方案:

方法一:GROUP BY 结合 HAVING 子句

通过分组后过滤掉存在rowstatus=1的nodeid:

SELECT NodeID
FROM pollerstatus
GROUP BY NodeID
HAVING COUNT(CASE WHEN rowstatus = 1 THEN 1 END) = 0;

解释:

  • 先按NodeID分组,统计每个分组中rowstatus=1的记录数量。
  • HAVING子句筛选出该数量为0的分组,说明这个NodeID下没有任何一条记录的rowstatus等于1,完全符合需求。

也可以用SUM实现相同逻辑:

SELECT NodeID
FROM pollerstatus
GROUP BY NodeID
HAVING SUM(CASE WHEN rowstatus = 1 THEN 1 ELSE 0 END) = 0;

方法二:NOT EXISTS 子查询

通过子查询检查每个NodeID是否不存在rowstatus=1的记录:

SELECT DISTINCT NodeID
FROM pollerstatus ps
WHERE NOT EXISTS (
    SELECT 1
    FROM pollerstatus
    WHERE NodeID = ps.NodeID AND rowstatus = 1
);

解释:

  • 外层查询遍历每个NodeID,子查询检查当前NodeID是否存在rowstatus=1的记录。
  • NOT EXISTS确保只返回那些没有rowstatus=1记录的NodeID,DISTINCT用于去重,避免同一个NodeID被多次返回。

原SQL的问题分析

你之前的SQL仅筛选了rowstatus != 1的记录再分组统计,这会把像1014这种部分记录符合条件、但存在rowstatus=1记录的NodeID也包含进来,不符合“所有rowstatus均不等于1”的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:52:41