我必须将一个为mysql5编写的查询重写为mysql4.0,它不支持sub select,我有一个这样的查询:
select a,
c,
(select count(*) from A) as e
from (select b, sum(e) as a
from B
where h = "foo"
group by b) TABLEB,
(select sum(d),
count(*) as c
from C
where d = "bar") TABLEC我尝试在一个请求中合并TABLEA和TABLE B,但是sum()结果不正确( sum(e)值变成sum(e)乘以TABLEC的行数)
所有分组的值都会变成实际值的倍数(取决于行数)。
对于MySQL4.0,是否可以将此查询转换为一个查询,或者我必须将其拆分为三个查询?
发布于 2010-07-16 00:54:27
您到底为什么要迁移到MySQL 4.0?这是古老的历史,缓慢,错误和不安全。如果您使用的托管服务仍在运行MySQL 4.0,请切换到其他托管服务。
但不管怎样,我看不出为什么要将这些查询合并为一个查询,即使您使用的是MySQL 5.0。每个表的结果与其他表没有关系。
只需运行三个查询:
select b, sum(e) as esum from B where h = 'foo' group by b;
select sum(d) as dsum, count(*) as c from C where d = 'bar';
select count(*) as acount from A;附注:在SQL中对字符串文字使用单引号。
https://stackoverflow.com/questions/3257795
复制相似问题