2016-09-15 46 views
2

假設我有一個包含100萬行的表。一欄列出「組」,另一欄列出「銷售」。集團#的範圍從1到100,000,每個集團約有10個銷售條目。我想以某種方式將數據總結爲100,000行,每個組的銷售額總和而不是每個銷售額。更快的方式來總結SQL列的各個部分

到目前爲止,我的方法是運行一個從1到100,000的PHP循環,其中每個迭代發送一個SQL查詢到sum(Sales)WHERE Group = $ i。然後我可以將它回顯到一個html表中,或者將它插入到一個新的SQL表中。問題是這種方法需要幾個小時。

有關如何改善此過程的任何提示?有沒有辦法將它寫成一個單一的SQL查詢,這將大大提高速度?由於

+1

你可以添加一些數據的例子嗎? – Evgeniy

回答

4

僅僅嘗試了GROUP BY:

SELECT `group`, sum(sales) 
FROM your_table 
GROUP BY `group` 

編輯,包括背部蜱爲group。沒有它們,您將收到錯誤

+2

'組'是一個保留字,轉義它。 –

+0

已更新。謝謝@u_mulder – kbball

+1

完美!我知道這很簡單。這個網站是最好的。 – Tortooga

0

除非沒有其他解決方案,否則您應該始終避免循環中的SQL查詢。在這種情況下,你可以一次抓取所有的字段,並將它們放在一個數組中,並以這種方式將它們添加到PHP中。

+0

這不是一個答案,它只是一個評論。 –

+0

而且,在準備好的陳述中,這並不完全正確。 – Strawberry

+0

我已經計劃回答,但是之前我的個人已經發布了答案 - 但是我覺得這點仍然很重要 - 它可能應該移到評論中。事實並非總是如此,例如準備好的陳述,這就是爲什麼它說「除非沒有其他解決方案」,即 - 如果在循環內不做它是不可行的。 – mbacklas