加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 如何将排名中的下一行获取到“最后一个id的排名”?

发布时间:2021-03-09 06:08:58 所属栏目: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); 询问 SELECT id,percent,FIND_IN_SET( percent,(SELECT GROUP_CONCAT( percentORDER BY percent DESC ) FROM

创建表格

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);

询问

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  percent rank
6   20      3
5   50      1
4   40      2
3   20      3
2   15      5
1   10      6

我不知道如何获取最后一个id下一行的行(rank)
例如:最后一个id的排名是3!

想要结果

id  percent rank
4   40      2
最佳答案 要解决您的问题,我们有2种语言选项:

> Php很容易 – >不好玩.
> MYSQL – >你已经使用Mysql完成了部分工作,所以我就这样完成了.

SQLFIDDLE:Demo

脚步 :

>获取最后一个ID的等级获取所有百分比的字符串

SELECT FIND_IN_SET( percent,(SELECT GROUP_CONCAT( percent ORDER BY percent DESC ) 
                      FROM goal_implement )) - 1 into @next_rank
FROM goal_implement 
ORDER BY id DESC
LIMIT 1;

SELECT GROUP_CONCAT( percent ORDER BY percent DESC ) 
FROM goal_implement into @str_rank;

这段代码将为您提供:

@next_rank       @str_rank
   2          50,40,20,15,10

让我们开始有趣(pbm起步 – Kappa):MYSQL中没有任何explode()函数.

>在@str_rank中获取与@next_rank相关的百分比

我们用本机功能做的最好的是:

> SELECT SUBSTRING_INDEX(@str_rank,’,@ next_rank);
>结果:50,40

但我们只有’40’

– >让我们找到/创建一个函数来提取1到-1位置之间的字符串(大到Arman P.)

CREATE FUNCTION SPLIT_STRING(str VARCHAR(255),delim VARCHAR(12),pos INT)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str,delim,pos),LENGTH(SUBSTRING_INDEX(str,pos-1)) + 1),'');

.
SELECT SPLIT_STRING(@str_rank,@ next_rank)到@next_percentage;

这将在@next_percentage中存储’40’

结果:(最后)

SELECT *,@next_rank as rank
FROM goal_implement 
WHERE percent = @next_percentage;

输出:

id  percent     rank
4     40         2

PHP版本:

$Array_test假定您的查询返回的数组

输出:

Array
(
[0] => 4
[1] => 40
[2] => 2
)

资源 :
Stackoverflow : Equivalent of explode

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读