【发布时间】:2017-12-19 20:05:22
【问题描述】:
在过去的几周里,我一直在努力将 68GB 的表分解成更规范的结构,直到今天一切都进展顺利。
我正在尝试使用此查询将大表中的选定几列移动到新表中:
insert into [destination] (col1, col2, col3...)
select col1, col2, col3
From [source]
where companyID = [source].companyID
我收到了消息,(60113678 行受影响),但数据没有插入到目标,源表中的数据也没有改变,所以什么受到影响,为什么没有是否有任何数据插入到目标中?
【问题讨论】:
-
but the data was not inserted into the destination -
where companyID = [source].companyID您正在尝试加入表格? -
您的
WHERE子句根本没有任何作用。作用域仅限于SELECT,所以看不到[destination]表,也就是说只能看到[source]表。因此,不合格的companyID被引用到[source]。这给了WHERE [source].companyID = [source].companyID,我怀疑你想这样做吗?请你解释一下它应该做什么?另外,您如何验证没有插入任何行?请显示完整的脚本和结果;类似SELECT COUNT(*) FROM [destination]; INSERT <blah>; SELECT COUNT(*) FROM [destination]; -
igor,目标表有两列数据和 8 个空值,所有空值仍然存在,受影响的行数是目标行数的三倍。
-
MatBailie 这就是我需要的解释。至于我想要完成的工作,我正在将特定的数据列从一个有超过 2000 万个重复项的表中移到一个新表中。
标签: sql sql-server insert-into