2017-02-13 59 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