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;