Sql INSERT语句正在将整数更改为空值

Sql INSERT语句正在将整数更改为空值,sql,teradata,Sql,Teradata,我正在创建一个包含300万行数据和9列的表。 我使用以下语法插入数据 INSERT INTO myTable ( column1 column2 column3 ... column11 problemColumn ) Select <exampleQuery> 插入myTable (第1栏) 专栏2 第3栏 ... 第11栏 问题栏 ) 挑选 1列(我将其称为problemColumn)将120万个空值插入该表 当我单独运行exampleQuery时(不将

我正在创建一个包含300万行数据和9列的表。 我使用以下语法插入数据

INSERT INTO myTable
( column1
  column2
  column3
  ...
  column11
  problemColumn
)

Select
<exampleQuery>
插入myTable
(第1栏)
专栏2
第3栏
...
第11栏
问题栏
)
挑选
1列(我将其称为problemColumn)将120万个空值插入该表

当我单独运行exampleQuery时(不将其插入表中),problemColumn返回0个空值

  • problemColumn在创建表时正确定义为整数
  • problemColumn具有300000个不同的值。每个值在表中至少出现一次,这意味着它不可能是格式错误的值的问题
  • 没有明显的价值观被系统删除的模式
编辑:一些额外的澄清:

  • 没有对problemColumn进行计算或联接。我只是从另一个表中选择该变量
  • problemColumn是源表中的整数,因此它不是不匹配变量类型的问题
这可能是数据库中表的大小的问题吗?我无法理解为什么查询会从根本上改变为insert语句。

最有可能的原因(我自己做过)是胖手指-插入的列位置错误。很难在看不到实际代码的情况下进行验证,但它可能非常简单:

insert into table 
(column1, 
column2)
select
(column2, 
column1)
from somewhere
第二种可能性-目标表上有一个触发器,它正在更改数据。我讨厌触发器的众多原因之一

我不知道Teradata,但RDBMS的关键是能够准确地处理这种情况,所以它不太可能与大小有关。要验证这一点,请尝试将查询限制为1个结果,然后查看结果

如果不起作用,请使用“值”将该查询的结果转换为insert语句


您确定两侧的数据类型相同吗?如果在目标表中是整数,如果在select中将其转换为整数会发生什么?您需要显示实际的SQL,是否对
problemColumn
进行了任何计算?能否提供示例数据和正在运行的实际查询的示例,以提供正确和错误的结果?瞎工作很难提供一个好的答案(或者,事实上,一个答案)。你的第一个解决方案解决了我的问题。insert语句中变量的顺序与查询中变量的顺序不匹配。然而,我很好奇为什么只有一些价值观受到影响。我希望每个值都是空的。
INSERT INTO myTable
( column1
  column2
  column3
  ...
  column11
  problemColumn
)
values
(....)