SQL Server 2008 - 仅更新表中的特定行数

Wil*_*ill 1 sql sql-server select count

我有一个名为mytable的表,其中包含许多列.
我想要做的是更新该表中匹配2个列的列,但仅限于符合条件的前400个记录.

例:

Name     Ref   ID    Text
Run Code Online (Sandbox Code Playgroud)

当ref = 555且id = 7时,我想用"匹配"一词更新名为Text的列.
我知道将有大约800条符合标准的记录,但我只想更新前400条.
有人可以帮忙吗?

问候,威尔.

Tim*_*ter 7

一种简单的方法是ROW_NUMBER在a中使用CTE,例如:

WITH CTE AS
(
   SELECT rn = ROW_NUMBER() OVER (ORDER BY ref, id),
          ref, id, text
   FROM   MyTable
   WHERE  ref = 555 AND  id = 7
)
UPDATE CTE SET text = 'Matched' 
WHERE RN <= 400
Run Code Online (Sandbox Code Playgroud)

演示