Удалить Top-N 'Rows из таблицы с некоторой сортировкой (порядок по столбцу)
У меня возникла некоторая путаница в отношении удаления верхнего порядка строк N по некоторым столбцам.
Я создал здесь пример Пример скрипки
Что не так с этими запросами?
Delete Top(3) from Table1 order by id desc
Delete Top(3) from Table1
where id IN (select id from Table1 order by id desc)
Так как в mysql ключевое слово limit делает работу очень хорошо
Ответы
Ответ 1
Вы можете использовать CTE, чтобы выполнить более быстрое упорядоченное удаление, не требуя, чтобы отдельный подзапрос извлекал верхние 3 идентификатора.
WITH T
AS (SELECT TOP 3 *
FROM Table1
ORDER BY id DESC)
DELETE FROM T
Ответ 2
Добавьте предложение top 3
в подзапрос:
Delete from Table1
where id IN (
select top 3 id
from Table1
order by id desc
)