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

SQL单表按ID筛选仅含sent和空status、排除delivered的数据查询问题

SQL查询实现方案

需求说明

需要筛选出满足以下条件的message_thread_id:

  • 该ID对应的所有记录中,不存在status为delivered的记录
  • 该ID对应的所有记录的status仅能为sent或者空值/NULL

实现代码

假设目标表名为message_records,可选用以下两种实现方式:

方式1:聚合筛选(推荐,单表扫描性能更高)

SELECT message_thread_id
FROM message_records
GROUP BY message_thread_id
HAVING
  -- 无delivered状态的记录
  COUNT(CASE WHEN status = 'delivered' THEN 1 END) = 0
  -- 所有记录状态仅为sent或空
  AND COUNT(CASE WHEN status != 'sent' AND status IS NOT NULL AND status != '' THEN 1 END) = 0

方式2:子查询筛选

SELECT DISTINCT t.message_thread_id
FROM message_records t
WHERE NOT EXISTS (
  SELECT 1 FROM message_records t1
  WHERE t1.message_thread_id = t.message_thread_id
  AND t1.status = 'delivered'
)
AND NOT EXISTS (
  SELECT 1 FROM message_records t2
  WHERE t2.message_thread_id = t.message_thread_id
  AND t2.status != 'sent' 
  AND t2.status IS NOT NULL 
  AND t2.status != ''
)

样例运行结果

针对提供的测试数据,最终筛选出的符合条件的ID为:

  • 240
  • 1044

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:24:08