0

我设法得到了这个: 如何在 TSQL 中获取第一列的条目结尾?

更新后的数据如下,并设法获得最后一条记录并更新。

Service; Sequence; EndSequence  
A, 2089697; 2089737
B, 2089738; 2089837
C, 2089838; 2090367
D, 2090368; 2090399
E, 2090400; 2090500

现在我想根据 ID 上的序列开始和结束开始来更新具有百万条记录的主表。我可以通过光标来做到这一点,但我更喜欢通过普通查询。

顺便说一句,我正在使用 SQL 2005。

Master表如下:

ID; Value; Service
2089697; 23; null
...
2090500; 12; null

所以结果将是:

ID; Value; Service
2089697; 23; A
... 
2089737; 45; A
2089738; 45; B
...
2089837; 34; B 
2089838; 23; C
...

谢谢

4

1 回答 1

1

这里不止一个选项。

  1. 相关子查询:

    UPDATE MasterTable
    SET Service = (
      SELECT s.Service
      FROM SequenceTable s
      WHERE MasterTable.ID BETWEEN s.Sequence AND s.EndSequence
    )
    WHERE Service IS NULL
    ;
    
  2. 内部联接:

    UPDATE MasterTable
    SET Service = s.Service
    FROM SequenceTable s
    WHERE MasterTable.Service IS NULL
      AND MasterTable.ID BETWEEN s.Sequence AND s.EndSequence
    ;
    

    替代语法:

    UPDATE m
    SET Service = s.Service
    FROM MasterTable m
    INNER JOIN SequenceTable s
      ON m.ID BETWEEN s.Sequence AND s.EndSequence
    WHERE m.Service IS NULL
    ;
    

这两个选项都假定 中的范围SequenceTable不重叠。

于 2013-03-04T07:03:26.670 回答