2013-03-26 89 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