2017-03-20 86 views
0

我有下面的表,它需要在基於子鏈的父子層次結構中進行排序......我沒有得到如何根據父母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 
3.1 
3.1.1 
3.1.1.1 
3.1.1.2 
3.1.2 
3.2 
3.2.1 
3.3 

因爲時間停留在這...任何想法如何進行呢?

+0

顯示你的SQL語句 – Jens

+1

更多我不知道這是否會在MySQL工作,但在SQL Server只是爲了股。你已經嘗試過了嗎? – Kevin

+0

我已經使用插入語句從3個不同的表中檢索數據到一個新的第四個目標表中,這是上面的一個 – goonernike

回答

0

使用此

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

http://rextester.com/NIK55090

這種方式使用RPAD訂單,您將更改3.13.1.0.0.0.所以排序是正確的。 更改10比你max(length(strand))

+0

我的最大長度(長度)是45 ..我試過50但它沒有來 – goonernike

+0

但是當我試圖給5 ....一切都是排序除了第一個元素... 3.1顯示在列表的末尾...像3.1之後。 3.11 – goonernike

+0

與3.2相同的情況顯示在最後..代替1 – goonernike

0

您可以通過(加入一些字符的BUIL相同長度的字符串)

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

這個問題中的樣本數據進行了測試,結果顯示爲相同的結果。 – goonernike

+0

使用長度大於最大字符數的長度值...並修剪掉所有空格 – scaisEdge

相關問題