【发布时间】:2020-10-19 02:23:45
【问题描述】:
我见过类似的东西
INSERT INTO TableNew
SELECT *
FROM TableOld
WHERE [Conditions]
将数据/行从一个表复制到另一个表。但对我来说.. 说 TableOld 有列
A B C D E F G H I J K L M N
我只想复制列
C D E F G H I J K L M N
将 TableOld 转换为 TableNew。两个表的列数相同,但 TableNew 的前两个是我需要在插入之前为其生成的 Id 值。所以我需要在 TableNew 中插入一个新行,其中前两列的数据来自变量,其余的是 TableOld 中一行的一些列的副本,对于 TableOld 中的每一行,TableNew 中还没有一行在哪里说 TableNew.C = TableOld.c 和 TableNew.D = TableOld.D。
我想过做一个游标来遍历 TableOld 的每一行并执行每个插入并检查已经存在的匹配 (C & D) 行,但想知道是否有更好的方法来做到这一点更像以上。
【问题讨论】:
-
您需要生成什么样的“Id”值?
identity列将自行处理,只需从列列表中省略它即可。也许是带有default或NewId的GUID?同样的交易。否则,在两边指定列列表,即insert into TargetTable ( Foo, Bar, Elvis, ... ) select Elvis, ... from SourceTable where ...;。
标签: sql-server database tsql datatable rows