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

合并多段SQL语句:将多查询合并为单查询以提升效率与关联性

合并多统计查询为单条语句的解决方案

没问题,咱们可以用条件聚合把这些分散的查询合并成一条,既提升查询效率(只需要扫描一次表),又能把所有统计数据放在同一个结果集里,完美保持数据关联性。

基础全局统计版本

如果只是要全局的总测试数、通过数等统计,直接用下面的语句:

SELECT
  COUNT(`teststatus`) AS `total tested`,
  COUNT(CASE WHEN `teststatus` = 0 THEN 1 END) AS `passed`,
  -- 示例:如果有失败状态(比如teststatus=1),可以继续添加统计项
  COUNT(CASE WHEN `teststatus` = 1 THEN 1 END) AS `failed`
FROM `testrecord`;

关联site表的分组统计版本

如果需要按每个公司(site表的记录)分别统计测试情况,直接关联site表并分组即可:

SELECT
  s.company_name,
  COUNT(tr.teststatus) AS `total tested`,
  COUNT(CASE WHEN tr.teststatus = 0 THEN 1 END) AS `passed`,
  COUNT(CASE WHEN tr.teststatus = 1 THEN 1 END) AS `failed`
FROM `testrecord` tr
LEFT JOIN `site` s ON tr.siteid = s.id
GROUP BY s.company_name;

关键逻辑说明

  • COUNT(teststatus):统计所有非NULL的测试状态记录,也就是总测试次数(如果teststatus字段不会为空,用COUNT(*)效果一样)
  • CASE WHEN ... THEN 1 END:只有当满足条件时才返回1,否则返回NULL;而COUNT函数会自动忽略NULL值,这样就精准统计出符合条件的记录数
  • 合并后的语句只需要扫描一次testrecord表,相比原来的多条查询多次扫描,在数据量较大时效率提升非常明显,同时所有统计结果在同一条/同一组记录里,不需要手动关联不同查询的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:25:30