我正在进行类似于这样的统计工作:
问题在于这样的效率非常低,如果能够使用tmp1的结果会更好,但我不知道该如何做。
更新:简化了SQL语句,在这种情况下,第一个子查询如下:
SUM |COND1 |COND2 |...
--------------------------
100 |80 | 70 |...
SUM结果是从多个表中计算出来的,而CONDS是其子集。
我编写了如下SQL:
select tmp1.id,sum,cond1,cond2 from (
select id, count(*) as sum from table1
group by table1.id) tmp1
left join (
select id, count(*) as cond1 from table1
where condition1
group by table1.id) tmp2 on tmp1.id=tmp2.id
left join (
select id, count(*) as cond2 from table1
where condition2
group by table1.id) tmp3 on tmp1.id=tmp3.id
问题在于这样的效率非常低,如果能够使用tmp1的结果会更好,但我不知道该如何做。
更新:简化了SQL语句,在这种情况下,第一个子查询如下:
select id, count(*) as sum from table1
group by table1.id) tmp1
这是一个简化的查询,实际上它是一个相当复杂的查询。我的意思是如何在计算cond1和cond2时重用这个嵌套查询的结果。