我有一个10个高分的表,当一个新用户出现一个大于最低的新高分时,我想从表中删除最低分数。我已经尝试了所有建议的方法。请有人帮忙。
答案 0 :(得分:0)
不要从表中删除 - 涉及太多维护。只需运行查询:
select t.*
from t
order by t.score desc
limit 10;
您可以在(score)
上放置一个索引,这样运行得更快。
您可以将其封装在视图中。
答案 1 :(得分:0)
这样的事情应该有效。您在插入新记录后运行它。
delete from t t1 where t1.score not in
(select t2.score from t t2 order by t2.score desc limit 10)
如果表中的每条记录都有唯一的ID,那么我将按如下方式对其进行修改:
delete from t t1 where t1.id not in
(select t2.id from t t2 order by t2.score desc limit 10)