0

3 つのテーブルがあるとします。1 番目のテーブルがマスター テーブルで、以下が詳細です

MasterTable(ID,col1,col2)

ChildTable1(Id,MasterId,Amount1)

ChildTable2(Id,MasterId,Amount2)

mastertable から id を見つけるsum(chiletable1.Amount1)必要があります。sum(chiletable2.Amount2)

groupby を使用してクエリを作成し、適切なデータを提供する句を作成しました。

テーブルに数十億のレコードがある場合のパフォーマンスの問題を念頭に置いて、グループ化せずに同じクエリを作成する他の方法はありますか? 以下は私の質問です

    select Mastertable.Id 
           from Mastertable,Childtable1,ChildTable2
           where Mastertable.Id=Childtable1.MasterId
                 and ChildTable1.MasterId=ChildTable2.MasterId
                 group by MasterTable.Id
                 having SUM(Childtable1.Amount1) > SUM(Childtable2.Amount2)
4

2 に答える 2

1

あなたの質問に答えるには、いいえ

理由は簡単です: a がなければsGROUP BYを持つことはできませんSUM()。(おそらく総計を除く)

(編集:ループやカーソルなどを含むストアド プロシージャかもしれませんが、それは間違いなくやり過ぎです!;))

于 2013-10-09T17:22:48.813 に答える