使用SubSelect的SQL引用与Inital load相同的表是很慢的

时间:2017-05-31 12:32:11

标签: sql db2 odbc

我DISTINCT将多个表一起加载:

Simple DISTINCT SELECT Table1.Val1, Table2.Val2, Table1.Val3,... 
FROM Table1/2/3 
WHERE Table2.KEYVAL = TABLE1.KEYVAL
AND TABLE3.KEYVAL = TABLE2.KEYVAL
some WHERE's on Table 1,2,3

我的主要选择声明中还有一些带有第4个表的子选择,它可以快速而精细地工作。

现在我想计算表3中值的和(我们称之为权重)。 表3结果具有多行(子ID)但共享相同的键。

我怎样才能做到这一点?

如果我在我的主要选择中放置一个SubSelect:

(SELECT Sum(weight) 
FROM Table3
WHERE Table3.KEYVAL = Table1.KEYVAL
) as Wheight

它变得很难看。

当我想为这个权重使用LeftJoin时,我(主要)Table3.weight和(SubSelect)Table3.weight之间有什么不同(或者sql)不同?

主要选择中的总和(重量)不能直接起作用,我认为是因为没有DISTINCT?

1 个答案:

答案 0 :(得分:0)

我认为您必须在子查询中使用Group by函数。

例如:

Select a.*, b.*
  from mytable as a
  join (select keyval, sum(weight) from my_second_table group by keyval) as b  
    on a.keyval = b.keyval