Insert into with union all and nextval 不适用于重复值
Insert into with union all and nextval doesn't work with duplicate values
我想在 Oracle SQL.
的一个 insert into
语句中的 table 中插入 2 行
此代码有效:
insert into a_glw select tt.*, work_id_seq.nextval from
(select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'test', 'text', 'great text'
from dual
union all
select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'test', 'text', 'great text'
from dual) tt;
当我将值 test
更改为 text
时,此代码会产生错误 00918. 00000 - "column ambiguously defined"
:
insert into a_glw select tt.*, work_id_seq.nextval from
(select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'text', 'text', 'great text'
from dual
union all
select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'test', 'text', 'great text'
from dual) tt;
在一个 select 语句中插入相同的值似乎是个问题。我怎样才能解决这个问题?
由于第二个示例中的值不同,您必须为列设置别名才能执行插入语句。
在第一个示例中,test
是列值,它假定 test
作为默认列名,因为您没有提供别名。
看例子here
如果您查看随附的屏幕截图,第二个示例将 TEXT 列重复两次,因为 select 语句将列值视为列名,因此您必须为列提供别名。
我想在 Oracle SQL.
的一个insert into
语句中的 table 中插入 2 行
此代码有效:
insert into a_glw select tt.*, work_id_seq.nextval from
(select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'test', 'text', 'great text'
from dual
union all
select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'test', 'text', 'great text'
from dual) tt;
当我将值 test
更改为 text
时,此代码会产生错误 00918. 00000 - "column ambiguously defined"
:
insert into a_glw select tt.*, work_id_seq.nextval from
(select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'text', 'text', 'great text'
from dual
union all
select 11111, 'one text', 12345, 'new text', NULL,
'some text', 'nice text', 'test', 'text', 'great text'
from dual) tt;
在一个 select 语句中插入相同的值似乎是个问题。我怎样才能解决这个问题?
由于第二个示例中的值不同,您必须为列设置别名才能执行插入语句。
在第一个示例中,test
是列值,它假定 test
作为默认列名,因为您没有提供别名。
看例子here
如果您查看随附的屏幕截图,第二个示例将 TEXT 列重复两次,因为 select 语句将列值视为列名,因此您必须为列提供别名。