如何更新表中的n行?

时间:2009-09-28 15:02:20

标签: sql sql-server sql-server-2005

我需要更新满足条件的表中的前N行。

我知道我可以做一个更新前N ...但问题是N在@variable中。

UPDATE TOP @N SET ...不起作用。

有没有办法做到这一点,我只是错过了?

这里没有特定的表定义,因为列是什么并不重要。如果我可以为一个列表做,我可以为我的表做。

2 个答案:

答案 0 :(得分:16)

如果要使用变量,则需要在TOP子句后使用parens:

UPDATE TOP(@N) ...

答案 1 :(得分:10)

WITH    q AS
        (
        SELECT  TOP (@r) *
        FROM    mytable
        ORDER BY
                col1
        )
UPDATE  q
SET     co12 = @value

UPDATE TOP (@r)可以使用,但会按任意顺序更新任何@r

来自documentation

  

TOPINSERTUPDATE一起使用的DELETE表达式中引用的行不按任何顺序排列。 TOP n会返回n个随机行。