Вы можете использовать один запрос таким образом, как этот
update pageslive as p
inner join (
select @r:=@r+1 as rn,id
from pageslive,(select @r:=0) as r order by fan_count desc
) as t
on p.id = t.id
set rank = rn
, но ИМХО, я бы не стал хранить вычисляемое поле в таблице.Вы всегда можете получить это значение с помощью простого выбора.