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

php – 排序mysqli结果后得到一行的位置

发布时间:2020-12-13 16:04:23 所属栏目:PHP教程 来源:网络整理
导读:我正在寻找一种方法来排序我的 mysqliresult后获取特定项目的位置.我有这样一张桌子: id_______|_Name_____________|_ParentID58 | Carl | 1555 | Clark | 1512 | David | 423 | Sophie | 1545 | Amanda | 15 我只对ParentID 15的行感兴趣,我想按名称对它们
我正在寻找一种方法来排序我的 mysqliresult后获取特定项目的位置.我有这样一张桌子:

id_______|_Name_____________|_ParentID
58       | Carl             | 15
55       | Clark            | 15
12       | David            | 4
23       | Sophie           | 15
45       | Amanda           | 15

我只对ParentID 15的行感兴趣,我想按名称对它们进行排序.然后我想看一个特定的项目,比如id 55(Clark)并知道它放在哪个行号上.我想生成一个这样的表:

id_______|_Name_____________|_ParentID
45       | Amanda           | 15
58       | Carl             | 15
55       | Clark            | 15
23       | Sophie           | 15

然后,当我对Clark感兴趣时,我想获得数字3,因为他的行是这个新表中的第三行.

这有可能与mysqli有关吗?如果它不能在一个语句中完成,我必须循环遍历所有选定的项目,并且每个项目的计数都会增加,直到找到正确的项目,但我真的想避免这个,因为要循环的项目数量通过快速增加.

解决方法

试试这个:

SELECT t.*,(SELECT COUNT(*) FROM YourTable s
        WHERE t.parent_id = s.parent_id 
           and t.name <= s.name) as Cnt
FROM YourTable t

输出:

id_______|_Name_____________|_ParentID__|_Cnt
58       | Carl             | 15        |  2
55       | Clark            | 15        |  3
12       | David            | 4         |  1
23       | Sophie           | 15        |  4
45       | Amanda           | 15        |  1

现在Cnt列包含行位置,因此要获得它们的任何一个位置:

SELECT tt.cnt 
FROM (...above query here...) tt
WHERE tt.name = ? --optional
  AND tt.parent_id = ? --optional

(编辑:李大同)

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

    推荐文章
      热点阅读