我正在尝试将相同的值插入到所有行中,除了从另一个表导入不同的值。我在oracle数据库上做这件事
我尝试过以下几种:
insert into table
(ID, version, other_id, value3,value4,value5,value6,value7,value8,value9)
VALUES
((select MAX(ID)+1 from table), '0', '5', '0', '1',
select name from table2,
select name from table2, '11', '14', '50');
除了表2中的名称在每个条目中不同之外,所有值都是相同的。
关于如何一次插入所有它们,而不是必须逐个插入,有什么提示吗?
当然可以,但不能用你的方式(正如你已经知道的(。
我建议您不要使用max + 1
,因为它无法正常工作,尤其是在多用户环境中。请改用序列。
以下是一个示例:基于t2
将值插入到t1
中。
样品表:
SQL> DESC t1;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
VERSION NUMBER
JOB VARCHAR2(10)
SQL> DESC t2;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
JOB VARCHAR2(10)
SQL> SELECT * FROM t1;
no rows selected
SQL> SELECT * FROM t2;
ID JOB
---------- ----------
1 CLERK
2 MANAGER
SQL>
A序列:
SQL> CREATE SEQUENCE seqt;
Sequence created.
插入声明:
SQL> INSERT INTO t1 (id, version, job)
2 SELECT seqt.NEXTVAL, '0', t2.job FROM t2;
2 rows created.
结果:
SQL> SELECT * FROM t1;
ID VERSION JOB
---------- ---------- ----------
1 0 CLERK
2 0 MANAGER
SQL>
我的第一次尝试是使用concatenate生成插入语句;ID使用max_ID+rownumber;
表2有多少行?如果不是数百万,连接应该是一种简单的方法。