永发信息网

mysql获取查询结果的行号

答案:3  悬赏:10  手机版
解决时间 2021-03-29 16:59
  • 提问者网友:鐵馬踏冰河
  • 2021-03-28 21:48
因为要做一个目录排序,比如有一个表示记录目录的,表数据如下,
目录id 目录名称 父目录id

1 第一章 0
2 第二章 0
3 1.1 xxx 1
4 1.2 xxx 1
5 2.1 xxx 2
现在要求 查询第一章的所有目录,也就是目录id 为1且父目录id也为1的所有目录,并且显示他们在数据库中的所在行号,比如按照当前查询结果,第一章所在行号就是1,目录id为3的 1.1 xxx的行号为2,目录id为4的 1.2 xxx为3
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2019-08-27 05:39
set @r=0;

select @r:=@r+1, id, name, pid

from t

where id=1 or pid=1
order by pid,name
全部回答
  • 1楼网友:鱼芗
  • 2020-12-11 21:37
oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的 rownum ; ms sql server 则在 2005 版本中提供了 row_number() 函数;但在 mysql 中似乎还没有这样的系统自带功能。 解决方法是通过预定义用户变量来实现: mysql set @mycnt = 0; mysql select (@mycnt := @mycnt + 1) as rownum ,name fromcharbase limit 100; 这样查询出来的结果集中 rownum 就保存了行编号信息。这个行编号信息的某种用途在于当你需要根据需要对数据按照某种规则排序并取出排序之后的某一行数据,并且希望知道这行数据在之前排序中的位置时就用得着了。 为了方便,我们通常将两句合起来执行,以避免变量全局自增:
  • 2楼网友:零点过十分
  • 2019-12-21 04:18
Select rownum as '目录id', 目录名称, 父目录id from TableName where 父目录id = '1';
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯