2014-02-26 102 views
0

我想确定是否有一种方法来排序由开始/结束列组成的MySQL表的行。 (也可以认为是父/子关系或其他链接列表排列)排序/排序MySQL中的数据对?

这里的数据当前存储的例子:

id  start  finish 
2  stepthree stepfour 
6  stepfive  stepsix 
9  stepone  steptwo 
78  stepfour  stepfive 
121  steptwo  stepthree 

(此ID号是不相关的,只是使用它们来指示任意数据的附加列)

我想排序/显示这些行的顺序,假设我总是以“stepone”开始,遍历开始 - >完成链,每个“完成”随后是该行作为“开始”。

desired output 
9  stepone  steptwo 
121  steptwo  stepthree 
2  stepthree stepfour 
78  stepfour  stepfive 
6  stepfive  stepsix 

通常不应有任何分支/分裂,只是一系列连续的步骤或状态。我不能使用简单的alpha排序(在我的情况下,开始和结束值是由客户创建的代码),但无法找出任何其他方式使用SQL来排序。我可以使用大多数语言以编程方式执行此操作,但难以仅使用SQL进行操作。

任何聪明的想法?

回答

0

我会建议让每个步骤都映射到其优先顺序的另一个表。

然后,您可以编写一个查询,按开始步骤的优先顺序对每一行进行排序。

+0

是的,尽管如此,我仍然需要2个表来维护(并小心地保持同步),但实际上只有其中一个表需要保留步骤顺序。如果有人在某个地方增加了额外的步骤,我还必须记得使用相同的信息更新该次表。我希望找到一种通过遍历一个原始表来获得排序顺序的方法。 – user3357493