【发布时间】:2015-11-03 12:54:33
【问题描述】:
我对一些需要循环的任务有困难。 作为我的 pl/sql 新手,我不知道如何解决这个问题,有人可以看看吗?
也许最简单的方法是呈现而不是描述我想做的事情:
Select id from table1 t1 join table2 t2 on t1.column=t2.column2
insert into table2 id from previous operation.
Select id from table1 t1 join table2 t2 on t1.column=ts.column2 where t1.id in (Select id from table1 t1 join table2 t2 on t1.column=t2.column2);
insert into table2 id from previous operation
现在如果之前的操作返回了一些数据然后做:
Select id from table1 t1 join table2 t2 on t1.column=t2.column2 WHERE t1.column in (Select id from table1 t1 join table2 t2 on t1.column=ts.column2 where t1.id in (Select id from table1 t1 join table2 t2 on t1.column=t2.column2)
insert into tablr2 id from previous operation
以此类推,直到 select 不会返回任何内容。
当然我知道“选择”会将重复的 ID 插入到 table3 中。 我只知道我必须使用循环,但不知道究竟是哪一个以及如何使用。可以处理吗?
编辑:
好吧,再一次, 我有 2 张桌子:
Table1
Column1
1
2
3
4
5
6
7
8
9
Table2
Column1 Column2 Column3
2345 1 0
5346 2 0
67542 3 23432
3452 4 324665
64356 5 34234
23432 6 0
324665 7 67867
34234 8 0
67867 9 9
Table to insert:
ID
1
2
3
4
作为输入,我得到了带有 ID 的 Table3,我想将其插入到例如。表 4 (ID)。
但其中一些 ID 可能有一些父/子 ID。这就是如何在循环中做到这一点的主要困难。一般我们可以通过using语句找到父/子ID:
从 table1 t1 中选择 ID 在 t1.id=t2.Column2 上加入 Table2 t2 在 t2.Column3=t2.Column1 上加入 Table2 t2
现在基于“要插入的表”插入语句(到 Table4 中)应该插入值: 1,2,3,4 + 6 和 7(我们可以看到 6 和 7 有父 id (Column0 ! = 0)。
现在我们要检查帐户 6,7 中的任何一个是否具有与以前相同的父/子 ID。 所以插入 Table4 应该插入值:9 结束。
当然这只是描述2-3次迭代的情况,如果会有更多的父/子ID怎么办?
我想使用一些表类型,并且在每个循环之后以某种方式将 ID 检入表变量并将其用于其他迭代......
【问题讨论】:
-
我不明白你为什么要使用嵌套子查询?也许您可以编辑您的问题以添加创建表语句,以及插入语句以创建一些示例数据,以及您所追求的预期输出。这样,我们就可以更好地了解您要做什么。我的直觉反应是,您应该能够在单个
insert into table2 select ...语句中执行此操作 - 无需逐行处理,也就是逐个缓慢处理! -
您在寻找分层查询吗?尝试搜索
CONNECT BY- 这就是您要查找的内容吗? -
我编辑了我的帖子,希望现在描述得更好..