MySQL UPDATE - выборочное обновление

0

Сначала, извинившись за ужасный титул, я не мог придумать лучшего способа сформулировать мою проблему. (Не стесняйтесь предлагать лучшие альтернативы)

В принципе, у меня есть таблица со столбцом "count". Я хочу reset подсчитывать до нуля, кроме 10 строк с верхними значениями. Я хочу, чтобы они были reset до 0.

Как мне достичь этого без написания нескольких запросов?

Обновление Теперь у меня есть мой запрос:

UPDATE covers AS t1 
  LEFT JOIN (SELECT t.cover_id 
               FROM covers t 
               ORDER BY t.cover_views DESC 
               LIMIT 10) AS t2 ON t2.id = t.id
   SET cover_views = 0
   WHERE t2.id IS NULL

Я получаю ошибку #1054 - Unknown column 't2.id' in 'where clause' - любая идея, почему?

Я также попробовал следующее с тем же результатом

UPDATE covers t1 
  LEFT JOIN (SELECT t.cover_id 
               FROM covers t 
               ORDER BY t.cover_views DESC 
               LIMIT 10) t2 ON t2.id = t.id
   SET t1.cover_views = 0
   WHERE t2.id IS NULL
  • 0
    Есть столбец идентификатора или столбец первичного ключа?
  • 0
    Да, первичный ключ
Показать ещё 1 комментарий
Теги:
sql-update
mysql-error-1054

3 ответа

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

попробовать:

update <table> t 
left outer join 
(
select id from <table> order by <counter> desc limit 10
) c on c.id = t.id 
set 
 <counter> = 0
where 
 c.id is null;
  • 0
    Это сработало, спасибо!
2

Использование:

UPDATE TABLE t1 
  LEFT JOIN (SELECT t.id 
               FROM TABLE t 
           ORDER BY t.id DESC 
              LIMIT 10) t2 ON t2.id = t1.id
   SET TABLE.count = 0
 WHERE t2.id IS NULL
  • 0
    Спасибо, это выглядит прекрасно, в любом случае я могу установить все из объединенной таблицы, чтобы быть 1 в том же запросе, или я должен сделать другой?
  • 0
    Я столкнулся с небольшой проблемой при реализации вашего запроса - я обновил вопрос - не могли бы вы взглянуть?
Показать ещё 3 комментария
0

Вы можете использовать подзапрос:

update A set count = 0 where A.id not in 
(select id from A order by count desc limit 10)
  • 0
    Ошибка MySQL 1093 - невозможно указать целевую таблицу для обновления в предложении FROM. Для получения дополнительной информации см .: stackoverflow.com/questions/3620940/…
  • 0
    @OMG Пони: Спасибо, OMG Пони. Как бы вы исправили код?
Показать ещё 1 комментарий

Ещё вопросы

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