我想在一个insert into
语句中使用Oracle SQL在表中插入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语句中插入相同的值似乎是个问题。我怎样才能解决这个问题?
答案 0 :(得分:1)
由于第二个示例中的值不同,您必须为列创建别名才能执行insert语句。
在第一个示例中,test
是列值,它假设test
为默认列名,因为您没有提供别名。
请参阅示例here
如果查看随附的屏幕截图,第二个示例是将TEXT列重复两次,因为select语句将列值视为列名,因此您必须为列提供别名。