2017-10-18 1 views
1

挿入されたときにそれに応じてランクを変更します。私は、新しい行を挿入したい場合はソートテーブルとは、新しい行は、私が持っている私のデータベースに次の表は

id userid totalpoints ranks 
1 142  50  2 
2 143  60  1 
3 144  40  3 

ない、と仮定し

4 145 55 

これで、その行を挿入し、mysqliとphpを使って総ポイントに基づいてランクを変更する方法はありますか?次のような出力を得るためには

id userid totalpoints ranks 
    2 143  60  1 
    4 145  55  2 
    1 142  50  3 
    3 144  40  4 

答えて

2

あなたは、データベース内のranks保管してはならないが、これは値を導出しているため。代わりに、データが必要な場合は、

SELECT ... ORDER BY totalpoints DESC 

を使用してください。これは、あなたが高いから低い点の順番で得点を得るでしょう。

+0

確かに良いアプローチです。 – Tarun

+0

そうですね。私はそれをもっと複雑にしました。ランクの列を削除することで私の問題は解決しました。助けてくれてありがとう。 –

0
SELECT id, 
    userid, 
    totalpoints 
    row_number() OVER (ORDER BY totalpoints) ranks 
    FROM users 

このsqlクエリを使用して出力を取得できます。

関連する問題