【发布时间】:2018-06-25 11:50:35
【问题描述】:
我有一个包含 10 个高分的表,当一个新用户带来一个高于最低分的新高分时,我想从表中删除最低分。我已经尝试了所有建议的方法。请有人帮忙。
【问题讨论】:
我有一个包含 10 个高分的表,当一个新用户带来一个高于最低分的新高分时,我想从表中删除最低分。我已经尝试了所有建议的方法。请有人帮忙。
【问题讨论】:
这样的事情应该可以工作。您将在插入新记录后运行它。
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)
【讨论】:
不要从表中删除 - 涉及太多维护。只需运行查询:
select t.*
from t
order by t.score desc
limit 10;
您可以在(score) 上放置一个索引,这样运行速度会更快。
您可以将其封装在视图中。
【讨论】: