如何更新表中的n行?

Moo*_*ose 8 sql sql-server sql-server-2005

我需要更新符合条件的表中的前N行.

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

更新顶部@N SET ...不起作用.

有没有办法做到这一点,我只是失踪?

这里没有特定的表定义,因为列是什么并不重要.如果我可以为一个列表执行此操作,我可以为我的表执行此操作.

Meh*_*ari 16

TOP当您想要使用变量时,需要使用parens after 子句:

UPDATE TOP(@N) ...
Run Code Online (Sandbox Code Playgroud)


Qua*_*noi 10

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

UPDATE TOP (@r)将工作但它将更新任何@r没有特定的顺序.

文档:

在引用的行TOP与使用的表达INSERT,UPDATEDELETE不按任何顺序排列.TOP n返回n随机行.