吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1009|回复: 9
收起左侧

[讨论] 【Oracle】,语法请教

  [复制链接]
柯子 发表于 2023-1-7 04:52
小白一枚,在使用oracle过程中有点想不通这个语法,求教大佬,如图:cld_area是行政区域表,包含region_code(本级行政区编号) 和 parent_code(父级行政区编号).
有2个问题:
1、开始with temp_cld_area(parent_code) 这个括号代表什么。
2、在with as中就可以先试用temp_cld_area这个临时表了吗,为啥这样写可以查出440100的所有父级行政区,主要是union all后面的select没太懂。
期待大佬的解答。
image.png



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pojie2001 发表于 2023-1-7 07:37
https://blog.csdn.net/nayi_224/article/details/82147786
可以看这个
先了解with语法百度oracle with
这个一看是个递归百度 oracle with 递归
dreamfrog 发表于 2023-1-7 08:54
Angle丶dianfeng 发表于 2023-1-7 09:19
你的问题你百度这两个关键字其实你就明白了

with 其实就是个子查询,只是为了重复利用,免得用的位置都(select * ....)这样子写一大堆查询,所以相当于封装了一下

至于union all后面的select没太懂

那就是个正常的查询语句 没什么难度啊  还是说你不懂union all
xiao0xiao 发表于 2023-1-7 10:32
1、开始with temp_cld_area(parent_code) 这个括号代表什么。

代表给你临时查询出来的结果起了个别名给临时表
比如括号里面也可以写成 with temp_cld_area(aaa)
那后面查询语句这样才能查询的出来 select  aaa  from temp_cld_area


2、在with as中就可以先试用temp_cld_area这个临时表了吗,为啥这样写可以查出440100的所有父级行政区,主要是union all后面的select没太懂。
union all就是 对两个结果集进行并集操作,包括重复行,不进行排序。
yiting8 发表于 2023-1-7 10:44
with temp_cld_area(parent_code) 这个括号 就是列的名称
goldli 发表于 2023-1-7 14:13
需要数据进行模拟
clevise 发表于 2023-1-8 09:15
1、with就是定义了一个查询,预先查出来放在内存,方便后期多次调用。
你给的例子里 temp_cld_area(parent_code) ,括号外是预取出来结果的表名和列名。
2、在with预取的定义里,通过union all又调用了自己temp_cld_area,这样递归调用,就把所有440100的父节点都选出来了。
with后面那个select就可以从with预取结构里把所有父级行政区编号提取出来。
zach14c 发表于 2023-1-8 10:57
这是11gR2后支援ANSI99的with语法,不过还是  connect 语法比较能语意清楚

with 中在 union all 前是取得 root, union all后是第一层以后,英文是说
other-than-the-root tree nodes
 楼主| 柯子 发表于 2023-1-8 21:44
哦哦 with有递归效果,多谢各位大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表