2011-08-29 82 views
1

我試圖找到最後十行中由某些條件選擇並按某列排序的特定列中值的總和。我試過很明顯的:查找最後n行的列中的值的總和

SELECT SUM(column) AS abc FROM table WHERE criteria ORDER BY column DESC LIMIT 10 

然而這似乎總結了整列!?

所以解決這個上場後似乎工作:

SELECT SUM(column) AS abc FROM (SELECT column FROM table WHERE criteria ORDER BY column DESC LIMIT 10) AS abc 

我的問題......

爲什麼沒有更直觀的方法工作的?

我可以通過使用$data[0]來訪問結果,但我更喜歡有一些有意義的變量。那麼爲什麼我需要做兩次AS abc

有沒有更好的方法來完成這項工作?

我對SQL查詢很不熟悉,所以我非常感謝任何幫助。

回答

1

因爲MySQL運行以下順序查詢:

FROM->WHERE->GROUP BY->HAVING->ORDER BY->LIMIT. 

所以限制將分組之後被應用,將過濾組,但不是普通的行。

關於abs兩次:有必要爲所有派生查詢添加別名。這是mysql規則。