Подтвердить что ты не робот

Удалить 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 делает работу очень хорошо

4b9b3361

Ответ 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
)