Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取“;最后一个id的排名”;?_Php - Fatal编程技术网

Php 获取“;最后一个id的排名”;?

Php 获取“;最后一个id的排名”;?,php,Php,需要帮助 Mysql查询: CREATE TABLE goal_implement( id INT, percent INT ); INSERT INTO goal_implement VALUES (1,10), (2,15), (3,20), (4,40), (5,50), (6,20); 我的PHP代码-此代码显示以下结果表 <?php $query2 = "SELECT _id, percent, FIND_IN_SET( percent, ( SE

需要帮助

Mysql查询:

CREATE TABLE goal_implement( id INT, percent INT ); 

INSERT INTO goal_implement VALUES 
  (1,10),
  (2,15),
  (3,20),
  (4,40),
  (5,50),
  (6,20);
我的PHP代码-此代码显示以下结果表

<?php
$query2 = "SELECT _id, percent, FIND_IN_SET( percent, (
SELECT GROUP_CONCAT( percent
ORDER BY percent DESC ) 
FROM goal_implement )
) AS rank
FROM goal_implement 
ORDER BY id DESC 
";
我不知道如何获取最后一个id上的下一行(秩),例如:最后一个id的秩是3!我想要下面的结果

使用PHP所需的结果:

4   40      2

既然您使用的是
mysql\u fetch\u array()
,为什么不使用它的索引呢

$row['rank'][$incrementHere]
试试这个:


我想我们可以使用
具有
子句来过滤数据

$query="SELECT id, percent, FIND_IN_SET( percent, (

SELECT GROUP_CONCAT( percent
ORDER BY percent DESC )
FROM goal_implement )
) AS rank
FROM goal_implement
HAVING id >".$last_id_rank."
ORDER BY id ASC limit 1";

无法理解短语“最后一个id的等级”,也看不到逻辑。为什么期望的结果是id=4行?@KoalaYeung-最后一个id(6)->秩(3)…我想显示秩(2)…的id。。。。“排名中的下一位”排名是唯一的吗?会有重复的排名吗?如果是平局。。然后是重复的。。。正如你在上面看到的:@rank 3有tie,,,,但在tie的bcoz中没有排名4..所以如果最后一个id排名是4,php将显示2行,对吗?谢谢伙计。。。它起作用了!!一些问题:如果要显示的行是平局,该怎么办;然后,两个并列的行将显示。。。如何只显示TIE中的一行,这是我前面问题的目的。根据你的回答,我假设在平局时应该显示多行。您可以简单地将最后一个foreach更改为仅显示一行。这样做应该很容易。
$row['rank'][$incrementHere]
$query="SELECT id, percent, FIND_IN_SET( percent, (

SELECT GROUP_CONCAT( percent
ORDER BY percent DESC )
FROM goal_implement )
) AS rank
FROM goal_implement
HAVING id >".$last_id_rank."
ORDER BY id ASC limit 1";