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

统计收件人A订阅但收件人B未订阅的记录数问题排查

问题描述
  • 收件人A(用户ID:13250626)的订阅记录:
    收件人A订阅记录
  • 收件人B(用户ID:13251076)的订阅记录:
    收件人B订阅记录

我要统计收件人A已订阅但收件人B未订阅的记录数量,预期结果为1,但以下查询返回0:

SELECT 
  COUNT(*) 
FROM 
  NmsSubscription 
WHERE 
  iRecipientId = 13250626 
  AND NOT EXISTS(
    SELECT 
      1
    FROM 
      NmsSubscription 
    WHERE 
      iRecipientId = 13251076
  )
修正方案

你的查询逻辑出错了——NOT EXISTS子句只是在检查收件人B是否存在任何订阅记录,而非检查B有没有订阅当前行对应的同一订阅项。只要B有过订阅,这个条件就不成立,自然返回0。

假设表中有标识唯一订阅项的字段(比如iSubscriptionId,请根据实际表结构替换成真实字段名),修正后的查询需要关联该字段,确保筛选的是A订阅过但B没订阅的具体项:

SELECT 
  COUNT(*) 
FROM 
  NmsSubscription a
WHERE 
  a.iRecipientId = 13250626 
  AND NOT EXISTS(
    SELECT 
      1
    FROM 
      NmsSubscription b
    WHERE 
      b.iRecipientId = 13251076
      AND b.iSubscriptionId = a.iSubscriptionId -- 关联同一订阅项
  )

如果你的表用其他字段(比如订阅名称、编码)区分不同订阅,把iSubscriptionId换成对应的字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:31:50