将相同的值插入到具有不同于其他表的值的表中

  • 本文关键字:其他 不同于 插入 sql oracle
  • 更新时间 :
  • 英文 :


我正在尝试将相同的值插入到所有行中,除了从另一个表导入不同的值。我在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有多少行?如果不是数百万,连接应该是一种简单的方法。

相关内容

最新更新