Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 树形 sql查询例子

通过此SQL语句 
  1. select  * from tree  
 查看原始数据如下:
我们要想得到如下的一个树形查询结果如下图所示(包含 ROOT, LEVEL, IS_LEAF,  PATH 四个字段):可执行如下SQL语句:
  1. select connect_by_root(child_col) root, level , decode(connect_by_isleaf,0,"No",1,"Yes") is_leaf, sys_connect_by_path(child_col,"/") path  
  2. from tree  
  3. start with parent_col is null connect by prior child_col=parent_col;  
树形查询的重点在于  start with ...  connect by prior .... 语句  以及 connect_by_root ,connect_by_isleaf,sys_connect_by_path这三个函数, decode是一般常用的函数。  其他参考:http://www.linuxidc.com/Linux/2012-05/60239p2.htm动态查询语句例子:
  1. declare  
  2.  n_rows number;  
  3.  v_sql_stmt varchar2(50);  
  4.  v_table_name varchar2(20);  
  5.  v_name varchar2(20);  
  6. begin  
  7.  v_table_name := "tree";  
  8.  v_sql_stmt := "select count(*) from " || v_table_name || " where parent_col = :1";  
  9.  v_name := "asia";  
  10.  dbms_output.put_line(v_sql_stmt);  
  11.  execute immediate v_sql_stmt into n_rows using v_name;  
  12.  dbms_output.put_line("The number of rows of" || v_table_name || "is " || n_rows);  
  13. end;  
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
  • 1
  • 2
  • 下一页
Linux下巧用my.cnf,mysql连接服务器不需要输入账号密码信息Oracle数据库教程:ORA-01031: 权限不足相关资讯      oracle数据库教程 
  • Oracle raw数据类型介绍  (01/29/2013 10:05:53)
  • 监听器注册与ORA-12514 错误分析  (11/13/2012 14:30:08)
  • Oracle SQL的cursor理解  (11/13/2012 14:16:17)
  • Oracle 如何强制刷新Buffer Cache  (01/29/2013 10:02:46)
  • dblink致Oracle库的SCN变成两库的  (11/13/2012 14:24:41)
  • Linux操作系统下完全删除Oracle数  (11/13/2012 08:25:52)
本文评论 查看全部评论 (0)
表情: 姓名: 字数