2013-03-26 90 views
0

我无法有效地查询查询,只查询1个表。下面是表数据的一个例子:MYSQL查询数据和结合,组和订单结果

ID NAME  PARENT_ID SORT_ORDER 
1  Home  NULL   1 
2  Contact NULL   3 
3  Service NULL   2 
4  Service1 3   0 
5  Service3 3   2 
6  Service2 3   1 

我想什么做的是从该表与具有与该ID的结果下出现一个PARENT_ID结果返回数据,并让所有结果的话,显示在他们的SORT_ORDER中。这里是我想查询导致上面的数据:

ID NAME  PARENT_ID SORT_ORDER 
1 Home  NULL   1 
3 Service NULL   2 
4 Service1 3   0 
6 Service2 3   1 
5 Service3 3   2 
2 Contact Null   3 

任何反馈,做到这一点是非常可喜的。

亲切的问候,

保罗

回答

0

如果我正确理解你的逻辑,你可以这样做:

SELECT 
    t1.* 
FROM 
    yourtable t1 LEFT JOIN yourtable t2 
    ON t1.PARENT_ID = t2.ID 
ORDER BY 
    COALESCE(t2.SORT_ORDER, t1.SORT_ORDER), 
    t1.PARENT_ID IS NOT NULL, 
    SORT_ORDER 

请参阅小提琴here

+0

这正是我所需要的。非常感谢! – Paul 2013-03-26 14:35:47