sql - 为 Oracle 插入循环
问题描述
我需要一个解决mi问题的方法。它不一定是一个循环,我很感谢每个输入。
我有一个包含 262 个条目的表。我们称之为EXPTB1。我有第二个表EXPTB2,它是空的。
现在对于 EXPTB1 中的每个条目,我需要 EXPTB2 中的 6 个条目。并且必须填写三个属性。一种是主键,由序列自动生成。一个是 EXPTB1 条目的外键,一个包含六个不同的数字(位置),用于 6 个条目中的每一个。数字将始终为 1、2、3、11、12、13。
因此,我们查看 EXPTB1 的单个条目,我需要为每个 ist 对象执行以下查询:
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,1);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,2);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,3);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,11);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,12);
insert into EXPTB2(EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION) values (EXPTB2_SEQ.nextval,EXPTB1_ID,13);
- 行号
- 主键 - 按序列创建
- EXPTB1 中条目的外键
- 位置
我希望我的描述足够清楚,描述起来有点困难.. :)
干杯费边
解决方案
您可以CROSS JOIN
使用包含值的表集合表达式:
INSERT INTO EXPTB2( EXPTB2_ID,EXPTB2_EXPTB1_ID,EXPTB2_POSITION )
SELECT EXPTB2_SEQ.nextval,
EXPTB1_ID,
t.COLUMN_VALUE
FROM EXPTB1
CROSS JOIN
TABLE( SYS.ODCINUMBERLIST( 1, 2, 3, 11, 12, 13 ) ) t;
推荐阅读
- javascript - 通过 npm (nodejs) 管理不同的代码库 (github repos)
- android - 阻止根用户安装我的应用程序
- sap - BO - 派生表中的对象
- sql - Oracle:将 WITH 子句子查询提取到流水线的链式函数中;效率比较
- php - 循环图像添加 laravel 控制器
- html - 没有当前目录的相对路径
- amazon-web-services - Amazon S3 文件上传有时会使用 Java sdk 失败
- python - 如何使用列值的组合来过滤数据并创建子集?
- android - 使用 CSV 更有效地在 Java 中执行此任务以插入 Room 数据库的方法
- java - 其他活动中的 OnCreate 扩展了基本活动