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;
我有以下 '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;