Mysql 使用结果列的和减少SQL语句

Mysql 使用结果列的和减少SQL语句,mysql,sql,sum,Mysql,Sql,Sum,这里的目的是,我希望返回与原始查询匹配的所有行(不带总和),并让mysql为我计算一个计算的总和,而不是发出单独的查询。如果没有subselect,我似乎只得到查询中附加了正确总和的第一行 有没有办法减少上述查询?我想您应该避免对每一行都运行子查询-下面是方法: select *, (a / 100) as a_calc, (select sum(a_calc) from foo where c = ? and d = ?) as a_calc_sum from foo wher

这里的目的是,我希望返回与原始查询匹配的所有行(不带总和),并让mysql为我计算一个计算的总和,而不是发出单独的查询。如果没有subselect,我似乎只得到查询中附加了正确总和的第一行


有没有办法减少上述查询?

我想您应该避免对每一行都运行子查询-下面是方法:

select *, 
  (a / 100) as a_calc, 
  (select sum(a_calc) from foo where c = ? and d = ?) as a_calc_sum 
from foo 
where c = ? and d = ? 
order by a;

是否要将所有匹配行的总和作为结果中的一列?你所说的“减少查询”是什么意思?这太抽象了,无法得到一个像样的答案。请在上提供一个示例架构,并在问题中显示应用于测试架构时查询的预期结果。通过减少,我的意思是,我希望尽可能简化SQL查询,包括可能分解重复的“where”子句。
select *, 
  a / 100 as a_calc,
  a_calc_sum
from foo 
join (select sum(a / 100) a_calc_sum from foo where c = ? and d = ?) x
where c = ? and d = ? 
order by a;