2014-07-16 69 views
0

我有一個產品表。複雜的mySql訂購

他們的身份證像12345爲母親,12345_1,12345_2,...爲孩子。

我想他們纔能有母親降序排序,但隨後孩子ASC:

12345 
12345_1 
12345_2 
12345_3 
12345_4 
12344 
12344_1 
12344_2 
12344_3 
12344_4 
12340 
12340_1 
12340_2 
12340_3 
12340_4 

我怎樣才能通過的條款構建我的訂單是什麼?

非常感謝

回答

0

您可以使用SUBSTRING_INDEX下劃線前後確切的部分:

ORDER BY SUBSTRING_INDEX(id, '_', 1) DESC, 
     IF(LOCATE('_', id), SUBSTRING_INDEX(id, '_', -1), '') ASC 

DEMO

0

這會爲你的樣本數據集的工作:

select your_column 
from your_table 
order by cast(substring_index(your_column,'_',1) as signed integer) desc, 
    your_column asc