これはどう:
update mytable set rating_place =(select count(*)+1 from mytable intb where intb.rating_score>mytable.rating_score)
----編集(コメント後)申し訳ありませんが、mysqlで更新しているのと同じテーブルから選択することはできないため、一時テーブルで試してください:
create table mytemptable as
select @row := @row +1 as place, mytable.id
from mytable, (SELECT @row := 0) r
order by rating_score desc;
そして、同様の更新:
update mytable set rating_place = (
select place
from mytemptable
where mytemptable.id=mytable.id
)
その後、その mytemptable を削除できます。
ただし、別のテーブルを避けたい場合でphpを使用できる場合は、試すことができます
$res=mysql_query("select id from mytable order by rating_score desc");
$ratings=array();
while ($r=mysql_fetch_assoc($res)) {
$ratings[]=$r['id'];
}
foreach ($ratings as $key=>$val) {
mysql_query("update mytable set rating_score=".($key+1)." where id=".$val);
}