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)
delete from table where id <> (select top 1 id from table order by id desc)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4068 次 |
| 最近记录: |