1

Given a table like this:

taskId nextTaskId
1 2
2 3
3 6
4 5
5 NULL
6 7
7 8
8 4

I need the following order for output:

taskId nextTaskId
1 2
2 3
3 6
6 7
7 8
8 4
4 5
5 NULL

Is there any way to do this via MySQL query?

jbohlken
  • 11
  • 2

1 Answers1

0

Using recursive CTE -

WITH RECURSIVE
self_ref_cte ( taskid, nexttaskid )
AS
( SELECT taskid, nexttaskid
          FROM self_ref WHERE taskid = 1
  UNION ALL
  SELECT s.taskid,  s.nexttaskid 
         FROM self_ref_cte c JOIN self_ref s
        ON s.taskid = c.nexttaskid 
)
SELECT * FROM self_ref_cte;

DB fiddle here.

Pankaj
  • 2,692
  • 2
  • 6
  • 18