如何在将DELETE FROM与OUTPUT结合使用时指定ORDER BY?

Kru*_*lur 4 sql sql-server-2008

我使用下面的查询从我的表中获取特定类型的下一项.如果多个服务器试图获取下一个项目,我选择此查询格式以防止竞争条件.问题:如何获得具有最低dtmLastRunDate的项目?我试图添加一个"ORDER BY dtmLastRunDate",但它给了我"关键字'ORDER'附近的语法不正确".

DELETE TOP(1) FROM Schedule
WITH (READPAST)
OUTPUT DELETED.intUserID, DELETED.dtmLastRunDate
WHERE intScheduleType = @intScheduleType
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 6

将其放入CTE中,如下所示.

;WITH T
     AS (SELECT TOP(1) *
         FROM   Schedule WITH (ROWLOCK, READPAST)
         WHERE  intScheduleType = @intScheduleType
         ORDER  BY dtmLastRunDate)
DELETE FROM T
OUTPUT DELETED.intUserID,
       DELETED.dtmLastRunDate  
Run Code Online (Sandbox Code Playgroud)