我正在寻找一种方法来在对我的 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
关于php - mysqli结果排序后获取一行的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36596792/