梦想
发布于

无法为特定排序方案找到解决方案

有一个场景,我经常需要在一个表中维护记录,该表定义了工作流订单定义以添加和删除阶段,从而将 ID 置于非交易顺序中(事后无法更改 ID)。

我需要一个 order by(或其他)方法来选择记录并显示他们将执行的顺序以轻松管理它们,但找不到解决方案,尽管我相信我缺少一个明显的解决方案。parent_id 中的 NULL 是工作流的开始。

示例简单记录:

id  strategy_id stage   parent_id
74  15  REMINDER_01 NULL
99  15  WARNING_06  74
76  15  WARNING_05  75
91  15  WARNING_08  76
78  15  WARNING_07  91
75  15  DEMAND_01   99

订购 我需要退回它们以便轻松处理它们并查看订单:

id  strategy_id stage   parent_id
74  15  REMINDER_01 NULL
99  15  WARNING_06  74
75  15  DEMAND_01   99
76  15  WARNING_05  75
91  15  WARNING_08  76
78  15  WARNING_07  91

我尝试过根据这个概念寻找解决方案,但认为我使用了错误的术语,所以没有得到任何匹配的东西。

浏览 (12)
点赞
收藏
1条评论
Klustron小助手
试试使用 database 方法生成解决方案。我已经使用 with version 来生成解决方案。相同的解决方案也适用于 recursivePostgres16MySql 工作查询: WITH RECURSIVE orderWorkflow AS ( SELECT id, strategy_id, stage, parent_id, 0 AS level FROM mytable WHERE parent_id IS NULL UNION ALL SELECT t.id, t.strategy_id, t.stage, t.parent_id, wo.level + 1 AS level FROM mytable t INNER JOIN orderWorkflow wo ON t.parent_id = wo.id ) SELECT id, strategy_id, stage, parent_id FROM orderWorkflow ORDER BY level, id;
点赞
评论