1

我在 tblCombined 中设置了一个唯一索引。它按顺序设置在名为 cyDate、dtlNr 和 seq 的字段上。

我有另一个表 - 临时表 - 称为 tblDailyResults。它具有与 tblCombined 完全相同的字段,但没有索引。每天,我都会从提要中接收到此临时表中的记录。

如果你愿意,我想做的是设置一个“catch”,这样如果重复的记录违反了唯一索引,它就不会出错——相反,它不会被插入;它将保留在暂存表中(然后我可以发出一个警报,指出这一点并从那里管理它)。

这是我尝试过的:

   Insert Into tblCombined
    ( 
        cyDate      
        ,dtlNr
        ,seq
        ,chCode
        ,opCode
        ,nrCode

    )

    Select
        cyDate      
        ,dtlNr
        ,seq
        ,chCode
        ,opCode
        ,nrCode

    From tblDailyResults

    Where Not Exists (Select cyDate ,dtlNr ,seq From tblCombined)

但是,这似乎不起作用。我测试了几条记录——改变了已经插入的字段,它仍然排除了不重复的记录。我承认我不熟悉使用“不存在”,所以也许我没有正确使用它。

我也尝试过 Where Not In,但这似乎不适用于多列。

任何建议表示赞赏。谢谢!

4

2 回答 2

2

你也需要一个where部分not exists,比如......

where not exists (select 1 from tblcombined 
  where tblcombined.cydate = tbldailyresults.cydate 
  and tblcombined.dtlnr = tbldailyresults.dtlnr 
  and tblcombined.seq = tbldailyresults.seq)
于 2012-05-08T21:02:52.407 回答
0

这是另一种方法:

Insert Into tblCombined
( 
    cyDate      
    ,dtlNr
    ,seq
    ,chCode
    ,opCode
    ,nrCode
)

Select distinct 
    a.cyDate      
    ,a.dtlNr
    ,a.seq
    ,a.chCode
    ,a.opCode
    ,a.nrCode
From tblDailyResults a
left join tblCombined b on a.cyDate = b.cyDate
                        and a.dtlNr= b.dtlNr
                        and a.seq= b.seq
                        and a.chCode= b.chCode
                        and a.opCode= b.opCode
                        and a.nrCode= b.nrCode
where b.cydate is null
于 2012-05-08T21:09:15.627 回答