2017-02-13 44 views
1

我有以下'departments'表:SQL:通過ROWID,然後通過基於ROWID列順序

+-------+-------------+-------------------+ 
| rowid | department | parent_department | 
+-------+-------------+-------------------+ 
| 10 | Main Office | NULL    | 
+-------+-------------+-------------------+ 
| 11 | Back Office | 10    | 
+-------+-------------+-------------------+ 
| 12 | Commercial | NULL    | 
+-------+-------------+-------------------+ 
| 13 | Outdoor  | NULL    | 
+-------+-------------+-------------------+ 
| 14 | Beach  | 13    | 
+-------+-------------+-------------------+ 
| 15 | Gardening | 13    | 
+-------+-------------+-------------------+ 
| 16 | Accounting | 10    | 
+-------+-------------+-------------------+ 

,我想它基於ROWID和parent_department因此下令:

+-------+-------------+-------------------+ 
| rowid | department | parent_department | 
+-------+-------------+-------------------+ 
| 10 | Main Office | NULL    | 
+-------+-------------+-------------------+ 
| 11 | Back Office | 10    | 
+-------+-------------+-------------------+ 
| 16 | Accounting | 10    | 
+-------+-------------+-------------------+ 
| 13 | Outdoor  | NULL    | 
+-------+-------------+-------------------+ 
| 14 | Beach  | 13    | 
+-------+-------------+-------------------+ 
| 15 | Gardening | 13    | 
+-------+-------------+-------------------+ 
| 12 | Commercial | NULL    | 
+-------+-------------+-------------------+ 

因此,對於每個rowid,查找是否存在'parents_departments'並按如下所示顯示順序。

請注意,我沒有設計當前表,可悲的是我沒有去改變它

回答

2

試試這個權限:

SELECT rowid, department, parent_department 
    FROM departments 
ORDER BY IFNULL(parent_department, rowid), rowid; 
+0

大謝謝。沒有意識到IFNULL – jQuerybeast

+0

@shmosel ...不錯的一個......但我嘗試了它在我的本地和它的返回rowid爲了10,11,16,12,13,14,15 –

+0

@AnkitAgrawal如果應該有父組之間的任何次序,OP沒有指定它。我的假設是無關緊要的。 – shmosel