1.递归函数 SELECT ...FROM WHERE (过滤返回记录,仅过滤被限定节点,其根节点和子节点均不受影响) START WITH (根节点,可以指定多个节点) CONNECT BY PRIOR= (连接条件,PRIOR置于等号前,则从根节点到叶节点开始检索;置于等号后,则从叶节点到根节点开始检索)
2.树状&拼接字符串(SYS_CONNECT_BY_PATH(column_name,'分隔符')函数) SYS_CONNECT_BY_PATH(column_name,'分隔符')函数 第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符 SUBSTR(SYS_CONNECT_BY_PATH(COLUMN_NAME,','),2) 先连接所有节点,从第二个字符开始截取,字符串用英文逗号隔开,取最完整条目。 此函数必须配合递归SQL使用 例: SELECT * FROM ( SELECT DISTINCT ROLE_NAMES||'-'||ROLE_NAME ROLE_NAME, SUBSTR(SYS_CONNECT_BY_PATH(NAME,','),2) NAME_PATH, LEVEL FROM MAIN PP WHERE PP.PARENT_ID IS NULL START WITH PP.PARENT_ID IS NULL CONNECT BY PRIOR PP.ID=PP.PARENT_ID ) ORDER BY ROLE_NAME,NAME_PATH
3.分组排序 语法格式:row_number() over(partition by 分组列 order by 排序列 desc) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行, 使用row_number()函数进行编号
--------------未完待续------------------