php C 如何将排名中的下一行获取到“最后一个id的排名”?
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_S
创建表格 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 percent rank 4 40 2 最佳答案 要解决您的问题,我们有2种语言选项:> Php很容易 – >不好玩. 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); 但我们只有’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),'');. 这将在@next_percentage中存储’40’ 结果:(最后) SELECT *,@next_rank as rank FROM goal_implement WHERE percent = @next_percentage;输出: id percent rank 4 40 2PHP版本: $Array_test假定您的查询返回的数组 (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |