【问题标题】:Deleting min value from table从表中删除最小值
【发布时间】:2018-06-25 11:50:35
【问题描述】:

我有一个包含 10 个高分的表,当一个新用户带来一个高于最低分的新高分时,我想从表中删除最低分。我已经尝试了所有建议的方法。请有人帮忙。

【问题讨论】:

    标签: mysql sql database min


    【解决方案1】:

    这样的事情应该可以工作。您将在插入新记录后运行它。

    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)
    

    【讨论】:

    • 在这种情况下我只有一张桌子,那么它如何与 t2 一起使用?
    • @LukeVarty t1 和 t2 只是同一个表(本例中名为 t 的表)的别名。这里发生的情况是,您正在针对要删除的同一个表创建子查询,并根据这些结果进行删除。
    • @LukeVarty 不要忘记为您的问题选择一个答案。 :)
    【解决方案2】:

    不要从表中删除 - 涉及太多维护。只需运行查询:

    select t.*
    from t
    order by t.score desc
    limit 10;
    

    您可以在(score) 上放置一个索引,这样运行速度会更快。

    您可以将其封装在视图中。

    【讨论】:

    • 这不会变得低效吗?
    • 这不会删除表格中的最低分数;它只选择前 10 名的分数,不回答问题。
    • @LukeVarty 。 . .可能不会,尤其是如果您有索引。
    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多