当前位置: 首页 > news >正文

connect by level语法的理解

connect by level的语法由于构造大量的数据的时候特别有用,但是如果没有真正理解其中的含义,滥用就会导致生产大量的数据,通常情况下错误的理解是基数记录和基数记录的笛卡尔积,笛卡尔积是没错,但是两个因子并不都是基数记录,其中一个是上1个level的记录,知道这点很总要,否则会生产大量的超出你预想的记录数出来,具体看测试过程。
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SQL> Select * From t3;

ID NAME
---------- -----
1111 aaaa
2222 bbbb
SQL> Create Table t4 As Select ' ' level_b,t3.* From t3 Where 1=2;

Table created
SQL> Create Table t5 As Select ' ' level_b,t3.* From t3 Where 1=2;

Table created

SQL>
SQL> Select * From t4;

LEVEL_B ID NAME
------- ---------- -----
SQL> Select * From t5;

LEVEL_B ID NAME
------- ---------- -----

SQL>
SQL> Select * From t3;

ID NAME
---------- -----
1111 aaaa
2222 bbbb
SQL> Create Table t4 As Select 0 level_b,t3.* From t3 Where 1=2;

Table created
SQL> Create Table t5 As Select 0 level_b,t3.* From t3 Where 1=2;

Table created

SQL>
SQL> Select * From t4;

LEVEL_B ID NAME
---------- ---------- -----
SQL> Select * From t5;

LEVEL_B ID NAME
---------- ---------- -----

SQL>
SQL> Declare
2 v_Level Number := 6;
3 Begin
4 Execute Immediate 'truncate table t4';
5 Execute Immediate 'truncate table t5';
6 Insert Into T4
7 Select Level, T3.* From T3 Connect By Level <= v_Level;
8 For i In 1 .. v_Level Loop
9 If i = 1 Then
10 Insert Into T5
11 Select i, T3.* From T3;
12 Else
13 Insert Into T5
14 Select i, T3.* From T3, T5 Where t5.level_b=i-1;
15 End If;
16 End Loop;
17 End;
18 /

PL/SQL procedure successfully completed

SQL> commit;

Commit complete

SQL>
SQL> Select Count(*) From T4;

COUNT(*)
----------
126
SQL> Select Count(*) From T5;

COUNT(*)
----------
126
SQL> Select *
2 From T4
3 Minus
4 Select * From T5;

LEVEL_B ID NAME
---------- ---------- -----
SQL> Select *
2 From T5
3 Minus
4 Select * From T4;

LEVEL_B ID NAME
---------- ---------- -----
-The End-


相关文章:

  • echarts 重新渲染(重新绘制,重新加载数据)等
  • 【转】如何恶搞朋友的电脑?超简单的vbs代码
  • 如何访问dashed filename
  • 超简洁的jquery操作页面中iframe内的dom元素
  • maven使用阿里镜像配置文件
  • 办理护照
  • h5混合开发好用的下拉刷新插件
  • 商务签证的准备(1)
  • 开启MySQL远程访问权限 允许远程连接
  • C#脚本实践(三): 集成到游戏
  • 软件测试V模型
  • 商务签证的准备工作(2)——DS-160表格的填写
  • 商务签证之结局:面试
  • exp参数之consistent一致性控制
  • 洛谷 P2171 Hz吐泡泡
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • ECMAScript入门(七)--Module语法
  • js算法-归并排序(merge_sort)
  • SegmentFault 2015 Top Rank
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SpingCloudBus整合RabbitMQ
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 基于axios的vue插件,让http请求更简单
  • 开源SQL-on-Hadoop系统一览
  • 那些被忽略的 JavaScript 数组方法细节
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 实习面试笔记
  • 微信开放平台全网发布【失败】的几点排查方法
  • 写给高年级小学生看的《Bash 指南》
  • 延迟脚本的方式
  • 用mpvue开发微信小程序
  • 原生Ajax
  • postgresql行列转换函数
  • 组复制官方翻译九、Group Replication Technical Details
  • !!java web学习笔记(一到五)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (三)模仿学习-Action数据的模仿
  • (实战篇)如何缓存数据
  • (一)Linux+Windows下安装ffmpeg
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • **CI中自动类加载的用法总结
  • .describe() python_Python-Win32com-Excel
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET面试题(二)
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /etc/skel 目录作用
  • /var/log/cvslog 太大
  • @JsonSerialize注解的使用
  • @Responsebody与@RequestBody
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce