[英]Copy a column from one table into another table
我已经尝试使用ALTER TABLE
来创建列,然后是INSERT INTO
。 这种工作,除了每个后续列,在上一列结束后开始。 我想这是插入到工作中的方式,所以是否有可以构建的解决方法或其他查询?
我一直在尝试更新,但它没有成功。 作为参考,这些是我使用的alter / insert查询。
SQL = "ALTER TABLE [results] ADD COLUMN [" & fld.Name & "_result] TEXT(25)"
db.Execute SQL
SQL = "INSERT INTO [results] ([" & fld.Name & "_result]) SELECT [Result] As
[" & fld.Name & "_result] FROM [newtable]"
db.Execute SQL
insert语句假定结果表只有一列需要插入数据。 如果在执行ADD COLUMN之前表已经有其他列,则不太可能出现这种情况。
您需要跟踪结果表中的列,并为每列提供数据(或默认值)。
从应用程序内部扩展表的结构是相当不寻常的。 你想达到什么目的? 您确定通过定义固定表然后从应用程序添加数据来更好地完成它吗?
UPDATE
好的,我想我明白你在描述什么。 在第一次迭代中,ALTER TABLE创建第一列。 INSERT添加了一堆在第一列中包含数据的行。
在第二次交互时,ALTER TABLE创建第二列。 INSERT创建了一大堆新行,但只填充了第二列。 第一列全为NULL,因为您没有为它提供值。 依此类推第三次及以后的迭代。
如果您的实际意图是复制源表及其数据,那么您应该在一次传递中创建结果表。 你知道列结构吧? 使用CREATE TABLE语句。 然后编写一个单独的INSERT语句,如下所示:
INSERT INTO [results]
([field1_result], [field2_result], [field3_result])
SELECT [Result] As
[field1_result, [field2_result], [field3_result]]
FROM [newtable]
这是你的想法吗?
在进入循环之前,创建[results]
表格为
SQL = "CREATE TABLE [results] SELECT [primary_key] FROM [newtable]"
db.Execute SQL
然后在循环的每次迭代中执行
SQL = "ALTER TABLE [results] ADD COLUMN [" & fld.Name & "_result] TEXT(25)"
db.Execute SQL
SQL = "UPDATE [results] SET r.[" & fld.Name & "_result] = n.[Result] " &
"FROM [results] r, [newtable] n " &
"WHERE r.[primary_key] = n.[primary_key]"
db.Execute SQL
所以,如果你在前两次迭代中有[newtable]
,那么
[primary_key] [Results] [primary_key] [Results]
1 A 1 D
2 B 2 E
3 C 3 F
你的[results]
表(在上面的两次迭代之后)看起来像
[primary_key] [fld1_result] [fld2_result]
1 A D
2 B E
3 C F
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.