【问题标题】:How to insert data in to table with a Union如何使用 Union 将数据插入到表中
【发布时间】:2023-03-15 18:53:01
【问题描述】:

我正在尝试向我的表中插入更多数据,下面的代码完美运行:

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

但是,当我尝试修改它以便插入 MOVIE_TITLE_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:

我猜我的格式错误,任何帮助都会很有用!

【问题讨论】:

  • 如果你指定(GENRES,MOVIE_TITLE_ID),那么每个SELECT应该提供两个值,而不是一个。

标签: sql oracle select union sql-insert


【解决方案1】:

每个unioned 子查询必须返回相同数量的列,具有相同的数据类型,而这些列又必须与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

【讨论】:

  • 哦,我现在明白了。再次感谢!
猜你喜欢
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 2020-03-24
  • 2014-03-26
相关资源
最近更新 更多