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

如何将三条MySQL统计查询语句合并为一条?

没问题!这事儿很容易解决——我们可以把三个查询的日期维度合并,再用条件聚合的方式把统计结果拆分成你要的三列,直接输出目标格式。

合并查询的具体实现方案
SELECT
    all_dates.date,
    COUNT(CASE WHEN src = 't1_created' THEN 1 END) AS count1,
    COUNT(CASE WHEN src = 't2_created' THEN 1 END) AS count2,
    COUNT(CASE WHEN src = 't1_started' THEN 1 END) AS count3
FROM (
    -- 收集所有可能的日期(覆盖三个查询的所有时间维度)
    SELECT DATE(created_at) AS date, 't1_created' AS src FROM t1
    UNION ALL
    SELECT DATE(created_at) AS date, 't2_created' AS src FROM t2
    UNION ALL
    SELECT DATE(date_started) AS date, 't1_started' AS src FROM t1
) AS all_dates
GROUP BY all_dates.date
ORDER BY all_dates.date DESC;

代码逻辑说明:

  • 子查询all_dates:通过UNION ALL把三个表/字段的所有记录(带上来源标识)合并,确保不会漏掉任何一个需要统计的日期。
  • 条件统计:用COUNT(CASE...)分别对每个来源的记录计数——当来源匹配时返回1,不匹配时返回NULL,而COUNT会自动忽略NULL值,刚好满足你需要的“无数据时显示null”的要求。
  • 排序优化:最后加上ORDER BY date DESC,让结果按日期倒序排列,方便查看最新的统计数据。

如果希望无数据时显示0而非NULL,只需要把COUNT换成SUM,并给ELSE分支设为0即可:

SUM(CASE WHEN src = 't1_created' THEN 1 ELSE 0 END) AS count1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:13:48