【发布时间】:2017-12-15 10:55:30
【问题描述】:
我想为以下内容创建 SQL Server 查询。我有这样的数据:
Id Name parentId
1 STU 0
2 XYZ 5
3 PQR 5
4 EFG 0
5 ABC 0
6 HIJ 1
7 DEF 1
这是我正在使用的查询:
SELECT *
FROM TABLE
ORDER BY CASE WHEN parentId = 0 THEN id ELSE parentId END ASC, id ASC
输出(父级及其子级一起排序):
Id Name parentId
1 STU 0
6 HIJ 1
7 DEF 1
4 EFG 0
5 ABC 0
2 XYZ 5
3 PQR 5
现在我也需要按姓名排序,首先按父母的姓名,然后是所有孩子,也按姓名排序。预期的输出是:
Id Name parentId
5 ABC 0
3 PQR 5
2 XYZ 5
4 EFG 0
1 STU 0
7 DEF 1
6 HIJ 1
有人对此有解决方案吗?为此,我需要严格的 SQL Server 查询。
附注将只有一个层次结构。
【问题讨论】:
-
孩子也能有孩子吗?如果是这样,你也需要迎合吗?
-
如果你有多个级别怎么办?结果应该先按层次排序再按名称排序?
标签: sql sql-server sql-order-by parent-child