这有点难以解释,所以我将逐步进行。下面是我创建的表格。
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;
最佳答案
你已经问过这个问题了。我之前已经给出了答案。其实不知道你的要求是什么......
SELECT @rn:=@rn+1 AS position, item_sum , id
FROM (
select
id,
sum(item_1+item_2+item_3) as item_sum
from yourtable
group by id
order by item_sum desc
) t1, (SELECT @rn:=0) t2;
关于php - Mysql排名行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510120/