2012-01-15 35 views
3

我想將總和的結果存儲在變量中,以便在查詢中使用它,但迄今爲止沒有成功。按條件使用mysql用戶定義的變量

  • 我已經試過了,它的工作就像我所料:SELECT @pos := 'titi' "c1", @pos "c2";

titi | titi

  • 當我試圖通過功能它只是不工作,一組做現在,它將我的變量設置爲最後處理的函數。

SELECT c1, @titi := SUM(c2), @titi FROM (SELECT 1 "c1",2 "c2" UNION SELECT 2,3 UNION SELECT 1,4) t GROUP BY c1;

實際輸出

1,6,3

2,3,3

所需的輸出

1,6,6

2,3,3

我能做些什麼使變量保持在每行的基礎上它的價值?

+0

查詢的語法不正確。目前還不清楚你想達到什麼目的:你想存儲什麼東西在下面的查詢中使用?爲什麼不使用子查詢? – newtover 2012-01-15 10:44:02

回答

5

如果我正確記得,這裏的問題是,當處理組的第一行時計算不包含聚合函數的列的值,而計算聚合值時分配@var:=SUM發生。

這就是你需要只是在其他上下文中重複聚合函數,或者如果聚合函數相當複雜,並且你不想重複:a)把所有東西放在子查詢中,b)使用類似的東西IF(COUNT(*), @var, @var)(看起來相當古怪)

PS您的查詢似乎無效,因爲列名必須用反引號引用。