删除SQL Server中除顶级记录外的所有记录

use*_*047 2 sql sql-server sql-server-2005

我正在尝试编写一个脚本来删除除最顶层之外的所有记录(如果它只是任何一个也没关系,那么只需要留下一条记录).这是我现在的格式:

DELETE FROM table
WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT id
    FROM table
    ORDER BY id DESC
    LIMIT 1 ))
Run Code Online (Sandbox Code Playgroud)

但我意识到LIMIT在SQL Server 2005中并不是一个公认的功能,所以我对于该做什么感到困惑.任何人都有关于这个主题的专业知识?并且这些记录不会重复,我只想取出除一条记录以外的所有记录.

更新:

我意识到我在这里想要完成的事情并不完全清楚.我需要做的是删除该表中除了顶部记录之外的所有记录,因为它在另一列中具有相同的值(让我们称之为'anotherid').

所以它是这样的:

id        value       anotherid       
1          3           1
2          4           1
3          5           2
4          6           2
5          7           2
Run Code Online (Sandbox Code Playgroud)

对此:

id        value       anotherid       
1          3           1
3          5           2
Run Code Online (Sandbox Code Playgroud)

Adr*_*iro 7

delete from table where id <> (select top 1 id from table order by id desc)
Run Code Online (Sandbox Code Playgroud)