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

消息系统开发:如何统计过去一年未收到回复的主消息数量?

统计过去一年未收到回复的消息数量

咱们先把需求捋清楚:要找的是过去一年发布的、带标题的主消息,而且这些消息完全没有收到任何回复。结合你给出的表结构,我给你两种常用的SQL实现方案,逻辑都很清晰:

方法一:用NOT EXISTS子查询(直观易懂)

这种写法直接瞄准目标主消息,同时确保不存在对应的回复记录:

SELECT COUNT(*) AS unreplied_count
FROM messages m
WHERE 
  m.related IS NULL  -- 判定为带标题的主消息
  AND m.title IS NOT NULL  -- 严谨过滤主消息特征
  AND m.date_time >= DATE_SUB(NOW(), INTERVAL 1 YEAR)  -- 限定过去一年的范围
  AND NOT EXISTS (
    SELECT 1 
    FROM messages r
    WHERE r.related = m.id  -- 检查是否有回复关联该主消息
  );

方法二:用LEFT JOIN + IS NULL(适合复杂关联场景)

通过左连接关联回复消息,筛选出没有匹配到回复的主消息:

SELECT COUNT(DISTINCT m.id) AS unreplied_count
FROM messages m
LEFT JOIN messages r ON r.related = m.id
WHERE 
  m.related IS NULL
  AND m.title IS NOT NULL
  AND m.date_time >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
  AND r.id IS NULL;  -- 左连接后无匹配,说明没有回复

小提示

不同数据库的日期函数略有差异:比如PostgreSQL可以把DATE_SUB(NOW(), INTERVAL 1 YEAR)改成NOW() - INTERVAL '1 year',SQL Server用DATEADD(year, -1, GETDATE()),你根据自己用的数据库调整就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:21:25