MS SQL: использование DELETE TOP c ORDER BY

Есть запрос:

DELETE TOP (@count) 
FROM [dbo].[Goods]
WHERE [Timestamp] < DATEADD(DAY, @daysOld, GETDATE())

Я не понимаю как использовать в данном случае ORDER BY т.к. в любых вариациях, когда я пытаюсь его использовать получаю ошибку типа Incorrect syntax near 'ORDER'

Подскажите, пожалуйста, как я могу использовать ORDER в данном примере


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Пожалуйста, попробуйте следующий SQL. Используя обновляемое выражение Common Table Expression (CTE).

Вам нужно будет указать конкретный столбец или столбцы для columnList.

SQL

;WITH CTE AS
(
    SELECT TOP(@count) *
    FROM [dbo].[Goods]
    WHERE [Timestamp] < DATEADD(DAY, @daysOld, GETDATE())
    ORDER BY columnList
)
DELETE FROM CTE;
→ Ссылка