Tsql 如何根据顺序从其他表更新?
我成功地做到了: 更新后的数据如下,并设法得到最后一条记录以及更新Tsql 如何根据顺序从其他表更新?,tsql,sql-server-2005,Tsql,Sql Server 2005,我成功地做到了: 更新后的数据如下,并设法得到最后一条记录以及更新 Service; Sequence; EndSequence A, 2089697; 2089737 B, 2089738; 2089837 C, 2089838; 2090367 D, 2090368; 2090399 E, 2090400; 2090500 现在,我想根据ID上的顺序start和end start更新主表,主表上有一百万条记录。我可以通过游标进行更新,但我更喜欢通过普通查询 顺便说一句,我使用的是SQ
Service; Sequence; EndSequence
A, 2089697; 2089737
B, 2089738; 2089837
C, 2089838; 2090367
D, 2090368; 2090399
E, 2090400; 2090500
现在,我想根据ID上的顺序start和end start更新主表,主表上有一百万条记录。我可以通过游标进行更新,但我更喜欢通过普通查询
顺便说一句,我使用的是SQL2005
主表如下所示:
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
...
谢谢这里有多个选项
UPDATE MasterTable
SET Service = (
SELECT s.Service
FROM SequenceTable s
WHERE MasterTable.ID BETWEEN s.Sequence AND s.EndSequence
)
WHERE Service IS NULL
;
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
中的范围不重叠