Delete Top-N' Rows from a Table with some sorting(order by 'Column')
sql, sql-server, t-sql
Solution
You can use a CTE to do a faster ordered delete without the need for a separate sub query to retrieve the top 3 ids.
WITH T
AS (SELECT TOP 3 *
FROM Table1
ORDER BY id DESC)
DELETE FROM T
Problem
I am having some confusion regarding Deleting the top N Rows order by some column. I created have an example here Example at fiddle What is wrong with these queries? ``` 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) ``` Since in mysql the limit keyword does the job very well