我看过类似的东西
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)行,但是想知道是否有更好的方法像上述那样。
通常公认的最佳做法是始终明确指定列列表-在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(逐列行)光标!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句