SQL:先按rowID排序,再根据rowid按列排序

SQL: Order by rowID and then by column based on the rowid

我有以下 'departments' table:

+-------+-------------+-------------------+
| 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' 是否存在,并显示如下顺序。

请注意,我没有设计当前的 table 遗憾的是我没有更改它的权限

试试这个:

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