使用内部联接更新表

时间:2019-01-31 20:27:34

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

我下面有两个表

BidID   CreatedDate              BidVersionNumber
2       2018-05-17 04:35:40.320    AB25443/01-01
3       2018-06-11 03:36:59.977    AB25443/01-01

第二张表

BidVersionNumber       CreatedDate        BidId
 AB25443/01-01       5/17/2018 4:35:40
 AB25443/01-01       5/17/2018 4:41:10     

我想通过与BidVersionNumber上的第一个表联接来更新第二个表的BidId,但是由于BidVersionNumber是相同的,所以我也想在部分时间4:35:40上对CreatedDate联接进行匹配。有人可以告诉我如何在两个专栏中加入吗?

所需的输出

BidVersionNumber       CreatedDate        BidId
 AB25443/01-01       5/17/2018 4:35:40     2
 AB25443/01-01       5/17/2018 4:41:10     3  

1 个答案:

答案 0 :(得分:0)

这里比较棘手的是时间比较。一种方法是从t1时间中减去一秒钟,基本上使用between

update t2
    set bidId = t1.BidId
    from table2 t2 join
         table1 t1
         on t2.BidVersionNumber = t1.BidVersionNumber and
            t2.CreatedDate <= t1.CreatedDate and
            t2.CreatedDate > dateadd(second, -1, t1.CreatedDate);