這有點難以解釋,所以我會一步一步來做。下面是我創建的表格。Mysql排名排行
id | item_1 | item_2 | item_3|
32 | 1 | 43 | 54 |
32 | 54 | 32 | 32 |
67 | 42 | 45 | 12 |
正如你所看到的,前兩排具有相同的ID,我的目標是,讓第一行是(1 + 43 + 54)的總和,而第二行的總和是(54 + 32 + 32),然後添加具有相同ID的兩行並從高到低排序。我設法用下面的代碼來做到這一點。但是如果我想獲得該行的position
,如下表所示。我基本上正在做一些排名系統,我首先通過item_sum命令他們,然後獲取行的位置。我怎樣才能實現它?
position | id | item_sum |
1 | 32 | 218 |
2 | 67 | 99 |
select
id,
sum(item_1+item_2+item_3) as item_sum
from yourtable
group by id
order by item_sum desc;
我試着做下面這段代碼:但位置號碼不按順序排列,因爲我通過「item_sum」
SET @position=0;
SELECT @position:= @position+1 AS position,
id,
sum(item_1+item_2+item_3) as item_sum
from yourtable
group by id
order by item_sum desc;
所以你期望返回的結果是:'32 - 216,67 - 99'? – BenM
id 32的總數是216.它是218嗎? –
稱爲'id'('identifier'的縮寫)的列應該是一個獨特的屬性。所以不應該有多個具有相同ID的行。如果有,那麼這個列不是一個id。 –