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

MySQL对比两张表统计指定日期各产品状态对应数量的实现问题

业务表说明

listings表

存储产品参考编号refno和当前最新状态,refno字段唯一,每个产品仅对应一条记录。若产品当前状态为Publish后续售出,状态会更新为Sold。
状态码映射规则:

  • 'D' → Draft
  • 'A' → Action
  • 'Y' → Publish
  • 'S' → Sold
  • 'N' → Let

测试数据插入语句:

INSERT INTO listings VALUES
 (3, 'Y','2021-05-02','2021-10-02','LP01'), 
 (4, 'A','2021-05-01','2021-05-01','LP02'),
 (5, 'S','2020-10-01','2020-10-01','LP03'), 
 (6, 'N','2021-05-01','2021-10-06','LP06'), 
 (10, 'D','2021-10-06','2021-10-06','LP05'), 
 (11, 'D','2021-01-01','2021-01-01','LP04');

logs表

状态变更日志表,通过refno字段与listings表关联。仅产品状态发生变更时才会生成日志条目,listings表的初始录入不会记录到logs表中。

测试数据插入语句:

INSERT INTO logs VALUES
 (1, 'Let','Action','2021-06-01','LP01'), 
 (2, 'Action','Draft','2021-10-01','LP01'), 
 (3, 'Draft','Publish','2021-10-02','LP01'), 
 (4, 'Action','Let','2021-10-06','LP06');
现有统计规则

全量数据按状态统计结果:

status_1计数c
Publish1
Action1
Sold1
Let1
Draft2

仅统计2020-10-01的有效条目时,预期结果为仅Sold状态计数为1,其余状态计数均为0。

现有查询问题

原有查询逻辑通过logs表的变更日期,对应扣减status_to的计数、增加status_from的计数来获取指定日期的总计数,存在两个缺陷:

  1. 查询2021-10-01及之前的变更数据时输出结果不符合预期
  2. 无法统计初始录入的条目数据,例如2020-10-01的统计需求,因初始录入没有对应的日志记录,无法得到预期的Sold计数为1的结果
核心需求

实现可指定查询日期的状态计数查询:排除查询日期之后发生的所有状态变更,同时覆盖初始录入未生成日志的条目,得到指定日期各状态的正确计数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:24:04