oracle 如何将数据插入到具有并集的表中

mefy6pfw  于 12个月前  发布在  Oracle
关注(0)|答案(2)|浏览(102)

我试图插入更多的数据到我的表,下面的代码工作完美:

insert into GENRES (GENRES) 
SELECT GENRE1 FROM titles
union all
SELECT GENRE2 FROM titles
union all
SELECT GENRE3 FROM titles

然而,当我试图修改它,这样我就可以插入电影_标题_ID与它我可以一个错误:

insert into GENRES (GENRES,MOVIE_TITLE_ID) 
SELECT GENRE1 FROM titles
union all
SELECT GENRE2 FROM titles
union all
SELECT GENRE3 FROM titles
union all
select TITLE_ID
from titles;

错误消息:

Error starting at line : 175 in command -
insert into GENRES (GENRES,MOVIE_TITLE_ID) 
SELECT GENRE1 FROM titles
union all
SELECT GENRE2 FROM titles
union all
SELECT GENRE3 FROM titles
union all
select TITLE_ID
from titles
Error at Command Line : 175 Column : 13
Error report -
SQL Error: ORA-00947: not enough values
00947. 00000 -  "not enough values"
*Cause:    
*Action:

我猜我做的格式不对,任何帮助都是有用的!

ahy6op9u

ahy6op9u1#

每个union艾德子查询都必须返回相同数量的列和等效的数据库,而这些数据库又必须与insert的列列表相匹配。您的查询声明了两个用于插入的列,但是子查询只返回一个列(并且,title_id的数据类型可能与genre1不同)。
相反,每个子查询应该生成两列:类型和相关的标题ID:

insert into genres (genres,movie_title_id) 
select genre1, title_id from titles
union all
select genre2, title_id from titles
union all
select genre3, title_id from titles
toiithl6

toiithl62#

实现此结果的最简单方法是通过下面提到的一个非常简单的查询。

SELECT * INTO task_master FROM admin_task_master UNION SELECT * from manuscript_task_master order by task_type_id;

相关问题