mysql获取查询结果的行号 50
因为要做一个目录排序,比如有一个表示记录目录的,表数据如下,目录id目录名称父目录id1第一章02第二章031.1xxx141.2xxx152.1xxx2现在要求查询第一...
因为要做一个目录排序,比如有一个表示记录目录的,表数据如下,
目录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 展开
目录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 展开
展开全部
看你的意思行号就是显示顺序号,你的查询结果可以按id升序排序(order by id),这样查询结果的顺序就是显示的顺序,这个行号可以在程序里加上,不用在数据库操作。另外最好是加上一个排序值得字段,这样可以随时调整显示顺序。
追问
不是顺序号,有可能在后边增加一条数据
6 1.0 xxx 1
这条数据就应该在1.1和1.2的前边
追答
这样最好是增加加一个排序字段,相同父节点的按排序值排序就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
set @r=0;
select @r:=@r+1, id, name, pid
from t
where id=1 or pid=1
order by pid,name
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Select rownum as '目录id', 目录名称, 父目录id from TableName where 父目录id = '1';
更多追问追答
追问
行号不是顺序号,有可能在后边增加一条数据
6 1.0 xxx 1
这条数据就应该在1.1和1.2的前边
追答
这个简单,可以这样子,后面再加一个:
order by 目录名称
就可以了,这样会自动升序排序的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询