The most straightforward way is to use the UPDATE
's WHERE
clause to select the values... embedding an IN (SELECT TOP 5 ...)
should do it.
Example:
create table ##dummy (pk int IDENTITY (1,1) PRIMARY KEY, vals varchar(50));
INSERT INTO ##dummy (vals) VALUES
('updateme')
,('updateme')
,('updateme')
,('updateme')
,('updateme')
,('leavemealone')
,('leavemealone')
,('leavemealone')
,('leavemealone')
,('leavemealone')
,('leavemealone')
,('leavemealone')
,('leavemealone')
SELECT * FROM ##dummy
UPDATE ##dummy
SET vals = 'fixed!'
WHERE
pk in (SELECT TOP 5 pk FROM ##dummy ORDER BY pk)
SELECT * FROM ##dummy
DROP TABLE ##dummy
So with your particular example, it is probably:
UPDATE
TempStaging
SET
pending = 'running'
WHERE
scan IN (SELECT TOP 5 scan FROM TempStaging WHERE pending = 'outstanding' ORDER BY scan)
Hope that helps!