一尘不染

按某种排序从表中删除前N行(按“列”排序)

sql

我对按某列删除前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关键字做得很好


阅读 209

收藏
2021-03-17

共1个答案

一尘不染

您可以使用CTE执行更快的有序删除,而无需单独的子查询来检索前3个ID。

WITH T
     AS (SELECT TOP 3 *
         FROM   Table1
         ORDER  BY id DESC)
DELETE FROM T
2021-03-17