【发布时间】:2013-12-26 18:07:18
【问题描述】:
我有一个 sql server 2008 r2 表,其中包含数千条已由单独程序更新的记录。由于疏忽,有一系列缺失的记录。我需要将丢失的记录插入数据库。如果记录存在(ANumber 和 Stage 与可能丢失记录的表匹配)则转到下一条记录,如果不存在则插入记录(ANumber、Stage、field3 到 field10。)
我想做的是首先创建缺失记录表(字段 1 -10)。将表命名为 tbMissRec。我现有的表是 MstrAnno。
这是我不确定语法的地方。我见过合并命令,但我想到的是那种逻辑
If (tbMissRec.ANumber = MstrAnno.ANumber) and (tbMissRec.Stage =
MstrAnno.Stage) then Else insert into MstrAnno
tbMissRec.ANumber,tbMissRec.Stage, etc)
我确信这不是正确的语法,但我认为逻辑很明显。
如果记录不存在,我只需要插入。
【问题讨论】:
-
您能否添加一些数据样本,说明您拥有什么以及想要获得什么?
-
请澄清。您是否要填充表 tbMissRec?如果是这样,您尝试从哪里获取数据?
-
我正在尝试更新表 MstrAnno。该表缺少一个月前完成的导入过程中的数据。我正在尝试返回记录并更新缺少数据的表。表中有 35K 条记录,我有 8K 条记录发生在我们试图修复的日期范围内。只有与 ANumber 和 Stage 不匹配的记录才需要插入到表中。
-
这是我尝试的代码 INSERT INTO MasterAnnotation SELECT A.[AdDate],A.Page_ID,A.Status,A.[AnnotationNumber],A.[AnnotationBy],A.[RoleDescription] ,A.[AnnotationDate],A.[AnnotationType],A.[BusinessUnit],A.[ActualAgencyError],A.[ErrorType],A.[AnnotationComments],A.[TeamComments],A.Client,A.Activity FROM dbo.MissRec A LEFT JOIN MasterAnnotation B ON B.AnnotationNumber = A.[AnnotationNumber] AND B.AnnotationDate = A.[AnnotationDate] WHERE B.AnnotationNumber IS NULL
-
我发现了问题。我需要在 insert into 语句中定义列名。一旦我这样做了,插入就会发生。
标签: sql sql-server-2008 sql-insert