求SQL语句:
查询前X行到前X+5行。X为已知数。返回前X-X+5行的ID。如果NEXT不为0。还需返回ID为NEXT值的那条记录。(如果ID为NEXT的记录的NEXT不为0。再递归一次)
数据表:
ID | NEXT
-------------
1 | 0
2 | 0
3 | 7
4 | 0
5 | 10
6 | 0
7 | 8
8 | 0
9 | 0
10 | 0
-------------例如 查询前0-5行记录查询结果:ID | NEXT
------------
1 | 0
2 | 0
3 | 7
4 | 0
5 | 10
7 | 8
8 | 0
10 | 0
-----------
首先返回前5条记录。然后3 NEXT 7。所以7也返回。 7 NEXT 8 所以 8也返回。 5 NEXT 10。10返回
求SQL查询语句
查询前X行到前X+5行。X为已知数。返回前X-X+5行的ID。如果NEXT不为0。还需返回ID为NEXT值的那条记录。(如果ID为NEXT的记录的NEXT不为0。再递归一次)
数据表:
ID | NEXT
-------------
1 | 0
2 | 0
3 | 7
4 | 0
5 | 10
6 | 0
7 | 8
8 | 0
9 | 0
10 | 0
-------------例如 查询前0-5行记录查询结果:ID | NEXT
------------
1 | 0
2 | 0
3 | 7
4 | 0
5 | 10
7 | 8
8 | 0
10 | 0
-----------
首先返回前5条记录。然后3 NEXT 7。所以7也返回。 7 NEXT 8 所以 8也返回。 5 NEXT 10。10返回
求SQL查询语句
with cte as
(
select * from table limit 0,5
union all
select d.ID,d.NEXT from cte c inner join table d
on d.ID=c.NEXT
)
select * from cte建议将表中的next等字段改名,还有上边 代码中的表名table也改成你要的
mysql现在不支持递归,你这个sql需求还是比较复杂的,要根据数据本身来判断,接下去显示什么数据,类似于循环的效果,建议你写个函数来实现把。