php - Mysql排名行数

标签 php mysql sql

这有点难以解释,所以我将逐步进行。下面是我创建的表格。

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;

查看答案。 Here look for what you need

关于php - Mysql排名行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510120/

相关文章:

php - 您的 SQL 语法有误 - 靠近“左”)

php - POST 的大小限制

php - 从数组中取消链接()

java - 确保 http post 来 self 的小程序而不是其他人?

mysql - 使用集群(NDBCluster 或 Galera)时,nodejs 应用程序如何连接到故障转移 MySQL 服务器之一?

sql - 在 native sql 查询中使用 IN 子句

php - 试图从我的投票表中获取所有选票的总和,但出现错误

mysql - 如何使用逗号从数据库中选择数据

php json_encode 对于同一对象有 2 个键

c# - 如何使用任务并行库从SQL表中批量读取大量记录