Как указать ORDER BY при использовании DELETE FROM в сочетании с OUTPUT? - PullRequest
4 голосов
/ 06 декабря 2011

Я использую запрос ниже, чтобы получить следующий элемент определенного типа из моей таблицы.Я выбрал этот формат запроса, чтобы предотвратить гоночные условия, если несколько серверов пытаются получить следующий элемент.Вопрос: как я могу получить элемент с самым низким значением dtmLastRunDate?Я попытался добавить "ORDER BY dtmLastRunDate", но он дает мне "Неверный синтаксис рядом с ключевым словом" ORDER "".

DELETE TOP(1) FROM Schedule
WITH (READPAST)
OUTPUT DELETED.intUserID, DELETED.dtmLastRunDate
WHERE intScheduleType = @intScheduleType

1 Ответ

6 голосов
/ 06 декабря 2011

Поместите его в 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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...