Jalena Blog

  • 首页
  • 程序开发
    • Java
    • Spring
    • SpringBoot
    • SpringMvc
    • Python
    • Odoo
    • C#
    • SQL
    • Web
    • Linux
  • 移动设备
    • Android
    • BlackBerry
    • Router
  • 杂七杂八
    • 我的废话
    • 音频
    • 视频
    • 常用软件
  • 关于
A bad workman always blames his tools.
  1. 首页
  2. Development
  3. SQL
  4. 正文

Oracle start with…connect by prior

2019-03-25 208点热度 0人点赞 0条评论

Oracle中start with…connect by prior子句用法connect by 是结构化查询中用到的,其基本语法是

select column_name from tablename
start with 条件1
connect by 条件2
where 条件3;

简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:org_id,parent_id,那么通过表示每一条记录的parent是谁,就可以形成一个树状结构,用上述语法的查询可以取得这棵树的所有记录。

prior 关键字表示父数据,prior 条件表示子数据需要满足父数据的什么条件。

实际使用

在项目中我们经常用到层级编码,例如:301090213,他其实是一个按照每2个数值分割的一种树形数据结构,在实际使用中我们希望通过301090213这个编码找出它所对应的所有父级数据。

常规情况我们会使用Like关键字来直接查找,这里其实Oracle提供了树形查找的方式。

我们其实可以这样写代码即可

SELECT * invname from
  bd_invcl
  start WITH pk_invcl = 'pk'
  connect by invcode = prior substr(invcode, 0, length(invcode) -2);

拼接字符

SELECT wm_concat(invname) from
   bd_invcl
   start WITH pk_invcl = 'pk'
   connect by invcode = prior substr(invcode, 0, length(invcode) -2);
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: oracle
最后更新:2019-03-25

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

点赞
< 上一篇
下一篇 >

文章评论

取消回复

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

腾讯云
最新 热点 随机
最新 热点 随机
Docker overlay2 清理 & 数据转移 PowerShell 升级 & 增强 Python pip 升级 ESXI & Alpine & Clash Premium 旁路网关 ESXi install Alpine & Clash Proxy 打造自己的Aria2c专属设置 ESXI 升级 Centos 7 离线安装Nginx Centos nmcli 网络管理命令 Linux 密钥登录
PowerShell 升级 & 增强Docker overlay2 清理 & 数据转移
Win7 下重建磁盘分区 让创意说服广告主 NGINX 添加MP4、FLV视频支持模块 wordpress 发布更新文章实时提交到百度站长平台 Python pip 升级 PLSQL Developer远程连接配置 Prodad heroglyph v2.6.31 JW FLV Media Player 折腾记 SpringBoot后台运行配置 博客的一些小改动
标签聚合
Centos 解码 其他 java Edius wordpress odoo 生活
Links
  • Feng Blog
  • 时空镜像
  • Emin.ink
  • ninja911
  • ZWWoOoOo
  • 猿人学网站

COPYRIGHT © 2021 Jalena Blog. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS