首页 > 解决方案 > 如何按照给定的方式在mysql中排序数据

问题描述

如何对此表行进行排序,以使下一行 pid 等于上一行 id

ID 姓名 PID
1 第 1 行 无效的
2 第 2 行 5
3 第 3 行 2
4 第 4 行 1
5 第 5 行 4
6 第 6 行 3

ID 姓名 PID
1 第 1 行 无效的
4 第 4 行 1
5 第 5 行 4
2 第 2 行 5
3 第 3 行 2
6 第 6 行 3

标签: mysqlmariadb

解决方案


WITH RECURSIVE
cte AS ( SELECT id, name, pid, 1 level
         FROM table
         WHERE pid IS NULL
       UNION ALL
         SELECT table.id, table.name, table.pid, cte.level + 1
         FROM table
         JOIN cte ON table.pid = cte.id )
SELECT id, name, pid
FROM cte
ORDER BY level

推荐阅读