2010-07-15 71 views
0

我不得不重写了MYSQL5写入mysql4.0不支持查询子选择我有这样的查询:合并子查询

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和表B但总和()结果不正确(总和(e)值成为总和(e)乘以TABLEC的行数)

所有分组值都成为实际值的倍数(取决于行数)。

是可以将此查询转换为只有一个查询为mysql 4.0或将我必须分裂成3查询吗?

回答

2

为什么在世界上你会迁移到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中对字符串文字使用单引号。