Raj*_*sh 376 sql t-sql sql-server sql-update
我想更新SQL Server中的前100条记录.我有一个表T1包含字段F1和F2.T1有200条记录.我想更新F1前100条记录中的字段.如何TOP 100在SQL Server中进行更新?
Uma*_*med 650
注意,UPDATE语句需要括号:
update top (100) table1 set field1 = 1
Run Code Online (Sandbox Code Playgroud)
Mar*_*ith 291
没有一个ORDER BY完整的想法TOP没有多大意义.你需要有一个一致的定义,哪个方向是"向上",哪个是"向下",因为top的概念是有意义的.
尽管如此,SQL Server允许它但不保证确定性结果.
UPDATE TOP接受的答案中的语法不支持ORDER BY子句,但可以通过使用CTE或派生表来定义所需的排序顺序,从而获得确定性语义,如下所示.
;WITH CTE AS
(
SELECT TOP 100 *
FROM T1
ORDER BY F2
)
UPDATE CTE SET F1='foo'
Run Code Online (Sandbox Code Playgroud)
Cla*_*o B 14
对于那些像我一样仍然坚持使用SQL Server 2000的人,SET ROWCOUNT {number};可以在UPDATE查询之前使用
SET ROWCOUNT 100;
UPDATE Table SET ..;
SET ROWCOUNT 0;
Run Code Online (Sandbox Code Playgroud)
将更新限制为100行
至少自SQL 2005以来它已被弃用,但从SQL 2017开始它仍然有效. https://docs.microsoft.com/en-us/sql/t-sql/statements/set-rowcount-transact-sql?view=sql-server-2017
小智 12
update tb set f1=1 where id in (select top 100 id from tb where f1=0)
Run Code Online (Sandbox Code Playgroud)