0
我想添加一個排列列,指示使用MySQL的SQL查詢中另一個數字列的排名。如何根據mysql中的聚合列添加排名列?
SELECT value, @i:[email protected]+1 as rank FROM table, (SELECT @i:=0) rank_init ORDER BY value DESC
這是以前所描述here和其他地方上SO:對於簡單的,非聚集的查詢這可以通過使用一個計數器變量如下來實現。但是,如果value
是聚合函數的結果(並且結果因此按聚合值進行排序),則排序列似乎是在應用排序之前添加的,並且當然也會跳過值。
SELECT sum(value), @i:[email protected]+1 as rank FROM table, (SELECT @i:=0) rank_init GROUP BY other_field ORDER BY value DESC
還有沒有使用臨時表或子查詢的方法?
是的,我知道的是,在我期待的解決方案,而子查詢 – barbaz
問題陳述我想你需要一個子查詢來實現這一點。我還指出,只是在查詢中設置參數使用子查詢。 –