我想更新SQL Server的前100条记录。我有一个包含字段F1和F2的表T1。T1有200条记录。我想更新排名前100的F1赛场。如何根据SQL Server的TOP 100进行更新?


当前回答

你也可以使用别名和join从select中更新:

UPDATE  TOP (500) T
SET     T.SomeColumn = 'Value'
FROM    SomeTable T
        INNER JOIN OtherTable O ON O.OtherTableFK = T.SomeTablePK
WHERE   T.SomeOtherColumn = 1

其他回答

对于那些像我一样仍然停留在SQL Server 2000, SET ROWCOUNT {number};可以在UPDATE查询之前使用

SET ROWCOUNT 100;
UPDATE Table SET ..;
SET ROWCOUNT 0;

是否将更新限制在100行

它至少从SQL 2005开始就被弃用了,但截至SQL 2017,它仍然可以工作。 https://learn.microsoft.com/en-us/sql/t-sql/statements/set-rowcount-transact-sql?view=sql-server-2017

注意,括号对于UPDATE语句是必需的:

update top (100) table1 set field1 = 1

这段代码可以完成它的工作

UPDATE TOP (100) table_name set column_name = value;

如果您想显示最近的100条记录,您可以根据需要使用这个选项。

With OrnekWith
as
(
Select Top(100) * from table_name Order By ID desc
)
Update table_name Set column_name = value;

你也可以使用别名和join从select中更新:

UPDATE  TOP (500) T
SET     T.SomeColumn = 'Value'
FROM    SomeTable T
        INNER JOIN OtherTable O ON O.OtherTableFK = T.SomeTablePK
WHERE   T.SomeOtherColumn = 1

Try:

UPDATE Dispatch_Post
SET isSync = 1
WHERE ChallanNo 
IN (SELECT TOP 1000 ChallanNo FROM dbo.Dispatch_Post ORDER BY 
CreatedDate DESC)