Сначала, извинившись за ужасный титул, я не мог придумать лучшего способа сформулировать мою проблему. (Не стесняйтесь предлагать лучшие альтернативы)
В принципе, у меня есть таблица со столбцом "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
попробовать:
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;
Использование:
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
Вы можете использовать подзапрос:
update A set count = 0 where A.id not in
(select id from A order by count desc limit 10)