【问题标题】:Can I use union all statement with insert into statement in teradata?我可以在 teradata 中使用 union all 语句和 insert into 语句吗?
【发布时间】:2021-10-30 20:23:19
【问题描述】:

我有两个具有相同列数和相同数据类型的表。然后我想用“union all”语句进行联合,并希望将结果值插入另一个表中。

我正在使用这个查询

    INSERT into DB.HRfinal

select LoginID,JobTitle,Name from DB.HR1
UNION ALL
select LoginID,JobTitle,Name from DB.HR2

但它只是从第一个表中插入值 因为 HR1 表中有 256 行,HR2 表中有 230 行,但它只在 HRfinal 表中插入 256 行

【问题讨论】:

  • 这应该可以。也许您没有执行整个查询或第二个表是空的。
  • 我正在通过选择整个查询并按 F5 来执行整个查询。第二个表不为空。
  • 我也尝试过使用这个查询,但是当我运行这个查询 INSERT into DB.HRfinal select( select LoginID,JobTitle,Name 时出现“子查询的选择列表中的表达式太多”的错误从 DB.HR1 UNION ALL 中选择 LoginID,JobTitle,Name from DB.HR2)
  • @irfangonal 。 . .尝试在您的问题中运行查询。您评论中的版本不正确。
  • 我已经尝试再次运行它,但结果相同。我认为这个查询的结构在 teradata 中可能略有不同,你说什么?

标签: sql teradata teradata-sql-assistant teradatasql


【解决方案1】:

我重新创建了您的示例,并从最终表中的两个表中获取了行。

我怀疑问题出在联合级别而不是插入部分。

试试:

第 1 步。

SELECT * INTO #tmp
(select LoginID,JobTitle,Name from DB.HR1
UNION ALL
select LoginID,JobTitle,Name from DB.HR2) TMP

检查#tmp 表是否包含所有行。如果有那么:

第 2 步。

INSERT into DB.HRfinal
SELECT * FROM #tmp

【讨论】:

  • 它说“选择失败。3706:语法错误:不允许使用 INTO 子句 P.s 我正在使用 teradata sql 助手
  • Try then: INSERT into DB.HRfinal select * from (select LoginID,JobTitle,Name from DB.HR1 UNION ALL select LoginID,JobTitle,Name from DB.HR2) TMP
  • 顺便说一句,不需要()
猜你喜欢
  • 2013-09-01
  • 2011-12-04
  • 1970-01-01
  • 2012-10-18
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
相关资源
最近更新 更多