2017-05-31 69 views
-1

我DISTINCT負荷多個表一起:SQL與子查詢指的同一張桌子Inital負荷緩慢

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),但共享相同的KEY。

我該如何做到這一點?

,如果我把我的主要選擇子查詢:

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

得到它的醜陋慢。

我(或主要)Table3.weight和(SubSelect)Table3.weight之間的差異(當我想使用LeftJoin的重量?

在主選擇中的總和(重量)不直接工作,我認爲是因爲不是DISTINCT?

+0

感謝湯姆格式化! – cernoel

+0

我已經把這個SQL放在一個PowerShell腳本中。並且將第四個表格加載爲Hashtable,這樣我就可以將它們粘在一起。我還沒有找到其他快捷方式..到目前爲止...'SELECT鍵,總和(值) 從表4 GROUP BY Key' – cernoel

回答

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