我需要更新满足条件的表中的前N行。
我知道我可以做一个更新前N ...但问题是N在@variable中。
UPDATE TOP @N SET ...不起作用。
有没有办法做到这一点,我只是错过了?
这里没有特定的表定义,因为列是什么并不重要。如果我可以为一个列表做,我可以为我的表做。
答案 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
行 。
与
TOP
,INSERT
或UPDATE
一起使用的DELETE
表达式中引用的行不按任何顺序排列。TOP n
会返回n
个随机行。