SQL Server如何只更新数据库中的一行?

Kla*_*ius 19 sql database sql-server sql-update

如何才能更新db上的一条记录?

表:

name       name1       name2
----------------------------
xx         xy          xz
xx         xx          xx
xx         xx          xx
xx         xx          xx
xy         xx          zz
Run Code Online (Sandbox Code Playgroud)

更新查询:

UPDATE table1 
SET name2 = '01' 
WHERE name1='xx'
Run Code Online (Sandbox Code Playgroud)

但我每次只需更新一行

s_f*_*s_f 48

你可以使用ROWCOUNT

SET ROWCOUNT 1

UPDATE table1 
SET name2 = '01' 
WHERE name1='xx'

SET ROWCOUNT 0
Run Code Online (Sandbox Code Playgroud)

或者您可以使用更新顶部

UPDATE TOP (1) table1 
SET name2 = '01' 
WHERE name1='xx'
Run Code Online (Sandbox Code Playgroud)

  • 这不应该被认为是答案."在下一版本的SQL Server中,使用SET ROWCOUNT不会影响DELETE,INSERT和UPDATE语句.在新的开发工作中不要将SET ROWCOUNT与DELETE,INSERT和UPDATE语句一起使用,并计划修改当前使用它的应用程序.另外,对于当前使用SET ROWCOUNT的DELETE,INSERT和UPDATE语句,我们建议您重写它们以使用TOP语法." (4认同)
  • 你能不能补充一下为什么`TOP(1)`没有写成'TOP 1`?:) (2认同)