复制表中的记录并插回到同一个表中,并更新了两列

时间:2017-09-20 18:39:25

标签: sql sql-insert

我想使用表中的记录作为模板,以便将新记录添加到同一个表中。我正在尝试创建一个SQL查询,它将选择“模板”记录,然后将这些记录插回到同一个表中,但更新两列。

所以我的初始SQL会是这样的:

CALCFILE

然后我想将查询返回的行插入到同一个表中,但记录使用更新的CECODE和{{1}}值。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

你需要显示每个字段,*不会这样做

INSER INTO CALCDETL ([col1],[col2],..,CALCFILE, CECODE )
SELECT [col1],[col2]...,NewCALCFILEValue, NewCECODEValue  
  FROM CALCDETL WHERECALCFILE = 'TEMPLATE' AND CECODE = 'SUB'

答案 1 :(得分:0)

这样的东西?

INSERT INTO CALCDETL (col1, col2, ...., colN, CALCFILE, CECODE)
    SELECT 
        col1, col2, col3, ....,   -- all columns *EXCEPT* the two in question 
        NewCalcFileValue, NewCeCodeValue
    FROM 
        CALCDETL 
    WHERE 
        CALCFILE = 'TEMPLATE' AND CECODE = 'SUB'

基本上,您选择模板行并重新插入它们,为这两个列指定新值。为此,您必须INSERT INTO声明中明确定义列列表(始终是推荐的最佳做法),并且必须指定从模板行中选择的显式列列表(并重新插入未更改)