ORDER SIBLINGS BY 子句仅在层级查询中是有效的。 可选的 SIBLINGS 关键字指定首先对父行排序,以及然后对该层级之内每个级别的每一父行的孩子行进行排序的顺序。
在下列示例中的层级查询返回层级数据集中的行的子集,其根为 Goyal,如主题 层级查询子句 中罗列的那样。 此查询包括 ORDER SIBLINGS BY 子句来按照 name 对那些报告给同一管理者的员工进行排序:
SELECT empid, name, mgrid, LEVEL FROM employee START WITH name = 'Goyal' CONNECT BY PRIOR empid = mgrid ORDER SIBLINGS BY name;
以下列顺序对此查询返回的行进行排序:
empid name mgrid level 16 Goyal 17 1 12 Henry 16 2 7 O'Neil 12 3 9 Shoeman 12 3 8 Smith 12 3 14 Scott 16 2 11 Zander 16 2 6 Barnes 11 3 5 McKeough 11 3 9 row(s) retrieved.
由于该排序键 name 为 VARCHAR 列,因此在每一兄弟的集合之内的返回的行都按照它们的 employee.name 值的 ASCII 顺序排列。仅在返回的行的层级中为叶节点的那些兄弟的集合在排序的结果集中连续地出现,因为管理者紧跟在向他们报告的员工之后,而不是他们的兄弟。此示例中的例外是 Scott,其孩子节点形成空集。
ORDER BY 子句中的 SIBLINGS 关键字是对 SQL 语言的 ISO 标准语法的扩展。如果您在不包括有效的 CONNECT BY 子句的查询或子查询的 ORDER BY 子句中包括 SIBLINGS 关键字,则 SELECT 语句失败并报错。
要获取更多关于层级查询和 CONNECT BY 子句的信息,请参阅 层级查询子句。