T-SQL 将行的副本从一个 table 插入到另一个仅使用变量值而不是一列
T-SQL Inserting copy of rows from one table to another only with values from variables instead of one column
我见过类似的东西
INSERT INTO TableNew
SELECT *
FROM TableOld
WHERE [Conditions]
将 data/rows 从一个 table 复制到另一个。但对我来说.. 说 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。两个 table 的列数相同,但 TableNew 的前两个是我需要在插入之前为其生成的 Id 值。所以我需要在 TableNew 中插入一个新行,其中前两列的数据来自变量,其余的是 TableOld 中一行中某些列的副本,对于 TableOld 中的每一行,其中 TableNew 中还没有一行其中 TableNew.C = TableOld.c 和 TableNew.D = TableOld.D.
我想做一个游标来遍历 TableOld 的每一行并执行每个插入并检查已经存在的匹配 (C & D) 行,但想知道是否有更好的方法来做到这一点像上面那样。
普遍接受的最佳实践始终显式指定列列表 - 无论是在您的 INSERT
语句中,还是在你的 SELECT
,而不是 *
:
INSERT INTO TableNew (C, D, E, F, G, H, I, J, K, L, M, N)
SELECT C, D, E, F, G, H, I, J, K, L, M, N
FROM TableOld
WHERE [Conditions]
根本不需要凌乱的 RBAR(逐行痛苦)游标!
我见过类似的东西
INSERT INTO TableNew
SELECT *
FROM TableOld
WHERE [Conditions]
将 data/rows 从一个 table 复制到另一个。但对我来说.. 说 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。两个 table 的列数相同,但 TableNew 的前两个是我需要在插入之前为其生成的 Id 值。所以我需要在 TableNew 中插入一个新行,其中前两列的数据来自变量,其余的是 TableOld 中一行中某些列的副本,对于 TableOld 中的每一行,其中 TableNew 中还没有一行其中 TableNew.C = TableOld.c 和 TableNew.D = TableOld.D.
我想做一个游标来遍历 TableOld 的每一行并执行每个插入并检查已经存在的匹配 (C & D) 行,但想知道是否有更好的方法来做到这一点像上面那样。
普遍接受的最佳实践始终显式指定列列表 - 无论是在您的 INSERT
语句中,还是在你的 SELECT
,而不是 *
:
INSERT INTO TableNew (C, D, E, F, G, H, I, J, K, L, M, N)
SELECT C, D, E, F, G, H, I, J, K, L, M, N
FROM TableOld
WHERE [Conditions]
根本不需要凌乱的 RBAR(逐行痛苦)游标!