TSQL:创建重复表并正确修改列中的值?

TSQL:创建重复表并正确修改列中的值?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一张主桌,我希望保持原样。我想复制这个表,然后找到带有where子句的特定记录,并将列值设置为null。然后我想将它重新插入到复制表中,而不在主表中修改任何内容 但是,由于某种原因,这些更改一直传播到主表,现在我已经采取了以下步骤: 一旦执行了语句3,当我执行时: 从表_Master中选择*,其中Col1='条件' 我在Col2中得到修改后的值,但我想在更新它之前得到该值 请告诉我是否还有其他方法可以实现这一点。我认为你把事情复杂化了 我不会假装我一开始就知道你为什么要这么做,但如果我不得不

我有一张主桌,我希望保持原样。我想复制这个表,然后找到带有where子句的特定记录,并将列值设置为null。然后我想将它重新插入到复制表中,而不在主表中修改任何内容

但是,由于某种原因,这些更改一直传播到主表,现在我已经采取了以下步骤:

一旦执行了语句3,当我执行时:

从表_Master中选择*,其中Col1='条件' 我在Col2中得到修改后的值,但我想在更新它之前得到该值


请告诉我是否还有其他方法可以实现这一点。

我认为你把事情复杂化了

我不会假装我一开始就知道你为什么要这么做,但如果我不得不这么做,我可能会这样做:

SELECT Col1, 
       IIF(Col1 = 'Condition', null, Col2) As Col2 
       [,Coln]  
INTO Table_Duplicate 
FROM Table_Master

然后在一个select into语句中获得所有进程。

?由于视图总是为Col2返回NULL,因此表_Duplicate.Col2将设置为NULL。当你说我想在更新之前得到这个值。你是什么意思?我的意思是,在执行语句3之后,table_duplicate.Col2被设置为零,出于某种原因,tablmaster.Col2也被设置为零,我不想这样做。假设tablemaster列2中的值为3.14159,我希望通过任何更新集命令保留该值。只有tableDuplicate应使用更新集命令进行修改。您创建了一个新表和一个视图。update语句的语法看起来不正确。什么来源之间有内在联系?您是否真的在更新视图及其下的基表?因此,视图col1是一个唯一的列表,也可以在表\u duplicate col1中找到。因此,更新应该使用在视图中找到的记录更新现有的表_重复记录。您似乎想要实现的是主表的一个副本,带有一个额外的列。如果这是真的,那么上面的代码片段就是最好的方法。
create view vw_Filtered as 
select Col1, null as Col2 from Table_Master where Col1 = 'Condition'
update
set Table_Duplicate.Col2 = vw_Filtered.Col2
inner join vw_Filtered 
on Table_Duplicate.Col1 = vw_Filtered.Col1
SELECT Col1, 
       IIF(Col1 = 'Condition', null, Col2) As Col2 
       [,Coln]  
INTO Table_Duplicate 
FROM Table_Master