只保留 SQL 数据库中的前 50 条记录并删除其余记录

Dus*_*san 4 mysql sql-delete

我有一个分数表,它由 2 个字段组成:name和high score。像这样的东西:

----------------------- 
| name     | score    |
-----------------------
| John     | 2450     |
-----------------------
| Alice    | 2420     |
-----------------------
                         ... etc    
Run Code Online (Sandbox Code Playgroud)

我需要删除所有行,直到前 50 名。

是否可以不创建另一个临时表?

小智 5

请试试这个

delete from scores_tbl Where
id not in
(select * from
(select id from scores_tbl order by score desc limit 50)
 as temp)
Run Code Online (Sandbox Code Playgroud)