2017-08-10 82 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)), ':');