Mysql 使用结果列的和减少SQL语句
这里的目的是,我希望返回与原始查询匹配的所有行(不带总和),并让mysql为我计算一个计算的总和,而不是发出单独的查询。如果没有subselect,我似乎只得到查询中附加了正确总和的第一行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
有没有办法减少上述查询?我想您应该避免对每一行都运行子查询-下面是方法:
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;