通过更改几个列值将行复制到同一个表

时间:2016-03-14 05:08:17

标签: sql sql-server sql-server-2008

我想通过更改几个列值将表中的一行复制到同一个表中。根据该行的形状,我必须将形状表中的行复制到具有新id的同一个表中。

我试过了:

public class Client
    {
        public string ClientName { get; set; }
        public int DnoId { get; set; }
        public string Dno { get; set; }
        public string Dfull { get; set; }
        public int DfullId { get; set; }
    }

var objlist = from tblA in context.TableA
    join tblB in context.TableB on tblA.lng_clientid equals tblB.lng_id
    where tblA.int_deleted.Equals(0)                              
    select new Client()
    {
        ClientName = tblA.str_client,
        DnoId = tblA.lng_dnoid,
        Dno = tblA.str_dno,
        Dfull = tblA.str_dfull,
        DfullId = tblA.lng_id
    };

但它给了我一个错误

  

消息121,级别15,状态1,过程Sp_CopyAnnotation,第23行   INSERT语句的选择列表包含的项目多于插入列表。 SELECT值的数量必须与INSERT列的数量匹配。

而且我不想明白我出错的地方

1 个答案:

答案 0 :(得分:1)

插入列列表

中缺少

AssetVersionID

INSERT INTO AnnotationMain
            (Text,
             x,
             y,
             Shape,
             Color,
             z1,
             JobID,
             AssetID,
             AssetVersionID, --Missing 
             UserID,
             UserName,
             Department,
             AssetVersionID,
             HideAnnotation)
SELECT Text,
       x,
       y,
       Shape,
       Color,
       z1,
       JobID,
       AssetID,
       AssetVersionID,
       UserID,
       UserName,
       Department,
       @NewAssetVersionID,
       1
FROM   AnnotationMain
WHERE  AnnotationID = @AnnotationID;