0%

SQL-层级查询

Oracle中为层级查询提供了层级查询子句。

语法

1
2
3
{ CONNECT BY [ NOCYCLE ] condition [ START WITH condition ]
| START WITH condition CONNECT BY [ NOCYCLE ] condition
}
  • condition:包括一个或多个表达式和布尔类型操作符,返回类型为TRUE, FALSE, 或者UNKNOWN。
  • START WITH:指定一条或多条根数据
  • prior:一元操作符,和+-有相同的优先级,为当前列的父亲列计算后面的表达式。
  • nocycle:如果父列和子列值相同,则需要使用nocycleconnect by后,排除那条数据

示例

1
2
3
4
5
select level, t.taskid, t.parentid, t.OPERATETIME
from t_edf_task t
connect by prior taskId = parentid
start with taskId = '339883'
order by OPERATETIME;

  • LEVEL:伪列展示节点级别
  • SIBLINGS:关键字在order by中间,类似于深度优先搜索

Mysql

Mysql中暂时没有层级查询的函数

参考资料