sql—通过迭代另一个表将值插入到表中

bf1o4zei  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(267)

我正在oracle数据库上尝试以下操作
我有一个表(t1)和一个值列表

id        name
1          A
2          B
3          C
4          C
5          B
6          A
7          A
8          D

我创建了一个新表,希望在其中添加来自t1的唯一名称,同时使用序列添加id

create sequence t2_seq start with 100 increment by 1;
CREATE TABLE t2 (
    id_t2 NUMBER(5) NOT NULL,
    name_t2 VARCHAR(25) NOT NULL
);

我尝试了以下方法,但不确定为什么不起作用

INSERT INTO t2 VALUES (t2_seq.nextval, name) SELECT DISTINCT name FROM t1;
pgky5nke

pgky5nke1#

很接近,但看起来是这样的:

INSERT INTO t2  (id_t2, name_t2) 
    SELECT t2_seq.nextval, name
    FROM (SELECT DISTINCT name
          FROM (SELECT 'a' as name FROM DUAL UNION ALL SELECT 'a' FROM DUAl UNION ALL SELECT 'b' FROM DUAL)
         ) x;

这是一把小提琴。
但是,在oracle的最新版本中,不需要序列。您可以使用:

CREATE TABLE t2 (
    id_t2 NUMBER(5) GENERATED ALWAYS AS IDENTITY,
    name_t2 VARCHAR(25) NOT NULL
);

相关问题