Удаление минимального значения из таблицы

0

У меня таблица из 10 баллов, когда новый пользователь приходит с новым высоким счетом, который больше, чем самый низкий, я хочу удалить минимальный балл из таблицы. Я пробовал каждый предлагаемый способ сделать это. Пожалуйста, помогите кому-нибудь.

Теги:
database
min

2 ответа

0
Лучший ответ

Что-то вроде этого должно работать. Вы запустили его после вставки новой записи.

delete from t t1 where t1.score not in 
(select t2.score from t t2 order by t2.score desc limit 10)

Если у вас есть уникальный идентификатор для каждой записи в таблице, я бы изменил его следующим образом:

delete from t t1 where t1.id not in 
(select t2.id from t t2 order by t2.score desc limit 10)
  • 0
    У меня только одна таблица в этом случае, так как она будет работать с t2?
  • 0
    @LukeVarty t1 и t2 - это просто псевдонимы для одной и той же таблицы (таблица с именем t в этом примере). Здесь происходит то, что вы создаете подзапрос для той же таблицы, для которой выполняете удаление, и удаляете на основе этих результатов.
Показать ещё 1 комментарий
0

Не удаляйте из таблицы слишком много обслуживания. Просто запустите запрос:

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

Вы можете указать индекс (score), чтобы он работал быстрее.

Вы можете инкапсулировать это в виде.

  • 0
    Не станет ли это неэффективным?
  • 0
    Это не удаляет самые низкие оценки из таблицы; он выбирает только 10 лучших баллов, что не отвечает на вопрос.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню