有这样两个表
表A
aaa bbb ccc
---------------------------------
a1 b1 100
a2 b2 200
a3 b3 300
表B
aaa bbb ddd
---------------------------------
a1 b1 d1
a2 b2 d2
a3 b3 d3
有这样一个sql
SELECT * from 表B
INNER JOIN
(SELECT aaa, bbb, sum(ccc) from 表A group by aaa, bbb) 表TEMP
ON 表B.aaa = 表TEMP.aaa AND 表B.bbb = 表TEMP.bbb
where ..........
因为
第一,在子查询中会把表A的所有行都合计,在表A中有很多数据的时候,担心会特别慢
第二,由于适当的where条件,会过滤掉表B中的很多数据,也就是说为了每次检索1,2条数据就得把表A的所有内容都合计一遍
由于这个子查询是一个更为复杂的查询,这里只是用这个表A举个例子,所以关于innerjoin子查询的这个结构没法改
请问怎么才能在执行子查询的时候就把条件限制住,只合计表A中有用的数据呢
谢谢了
------解决思路----------------------
条件直接加呗,用in或exists
(SELECT aaa, bbb, sum(ccc) from 表A
where exists(select 1 from 表B
where 表B.aaa= 表A.aaa and 表B.bbb= 表A.bbb
and 表B的其他条件
)
group by aaa, bbb) 表TEMP