在父子层次结构中排序

时间:2017-03-20 14:33:59

标签: mysql sql join group-by sql-order-by

我有下表需要在基于strand的父子层次结构中排序...我没有得到如何根据父ID订购它。

sid    parent_id    snum  strand         Sname
1       0           3      3.1           civics
2       0           3      3.2          geography
3       0           3      3.3          history
4       1           3      3.1.1        civic and insti
5       1           3      3.1.2        civic and poli
6       2           3      3.2.1        geo poli
7       4           3      3.1.1.1       CIVI
8       4           3      3.1.1.2       CIVVISSSDS

我希望基于父子层次结构中的strand以下列方式排序表。

Strand 
 3.1
 3.1.1
 3.1.1.1
 3.1.1.2
 3.1.2
 3.2
 3.2.1
 3.3

从几个小时开始坚持......任何想法如何进行?

2 个答案:

答案 0 :(得分:0)

你可以使用rpad作为order by(为构建相同长度的字符串添加一些char)

  select * from your_table
  order by rpad(trim(strand), 64, 'Z')

答案 1 :(得分:0)

使用此

SELECT * FROM your_table
ORDER BY RPAD(trim(strand),50,'.0');

http://rextester.com/NIK55090

这样,您将3.1更改为3.1.0.0.0.,因此排序正确无误。 将10更改为超过max(length(strand))