How to update and order by using ms sql

前端 未结 5 1337
粉色の甜心
粉色の甜心 2020-11-28 08:35

Ideally I want to do this:

UPDATE TOP (10) messages SET status=10 WHERE status=0 ORDER BY priority DESC;

In English: I want to get the top

5条回答
  •  无人及你
    2020-11-28 08:59

    As stated in comments below, you can use also the SET ROWCOUNT clause, but just for SQL Server 2014 and older.

    SET ROWCOUNT 10
    
    UPDATE messages
    SET status = 10 
    WHERE status = 0 
    
    SET ROWCOUNT 0
    

    More info: http://msdn.microsoft.com/en-us/library/ms188774.aspx

    Or with a temp table

    DECLARE @t TABLE (id INT)
    INSERT @t (id)
    SELECT TOP 10 id
    FROM messages
    WHERE status = 0
    ORDER BY priority DESC
    
    UPDATE messages
    SET status = 10
    WHERE id IN (SELECT id FROM @t)
    

提交回复
热议问题