2017-08-10 84 views
-1

我有一個這樣的表。 parent_tree列包含冒號分隔父樹即 盛大隆重的家長祖父母家長訂購父/子 - SQL中的分層數據表

parent_tree        | name    | Type 

All Liabilities:Current Liabilities  | Salaries Payable | Liabilities 
Assets         | Current Assets  | Assets 
null         | All Liabilities  | Parent 
All Liabilities       | Current Liabilities | Parent 
null         | Assets    | Parent 
. 
. 

問題 現在我想運行一個選擇查詢(選擇---從表順序----)以下面的順序得到結果,即父母先,然後是子女:

parent_tree        | name    | Type 

null         | All Liabilities  | Parent 
All Liabilities       | Current Liabilities | Parent 
All Liabilities:Current Liabilities  | Salaries Payable | Liabilities 
null         | Assets    | Parent 
Assets         | Current Assets  | Assets 

所以主要問題是我應該寫什麼E在爲了通過

我嘗試以下,但結果不正確的順序:

select * from table order by if(type = 'Parent', concat(coalesce(parent_tree,name), ':' ,name), parent_tree), length(parent_tree), if(type = 'Parent', 0, 1), type"; 

回答

0

我解決了這個與下面的查詢

select * from table order by 
order by concat( if(parent_tree is null, name, concat(parent_tree, ':', name)), ':');