а еще был attachment_fu, и еще есть dragonfly. так что «уже давно был» это слабенькая причина для использования только paperclip. лично мне более приятно использовать carrier_wave, он проще в обращении
UPDATE `test` t1
left join test t2
on t1.id = t2.id and t1.category - 5 > t2.category
SET t1.`category` = 5
where t2.category is null and t1.category = 1;
в сравнении без понятия. данный запрос работает по логике как вот такой
UPDATE `test` t1
JOIN (
SELECT id, MIN(category) AS category
FROM test
GROUP BY id) AS t2
ON t1.id = t2.id AND t1.category = t2.category
SET t1.`category` = 0
WHERE t1.category = 1;
UPDATE `test` t1
left join test t2
on t1.id = t2.id and t1.category <> t2.category
SET t1.`category` = 0
where t2.category is null and t1.category = 1;
забыл про category = 1, все остальное будет работать.