0

私のテーブルでは、1 時間に 50 人の学生が毎日何らかの試験で点数を提出します。

以下は表です

ID    StudID  Marks  Rank
1     101     56 
2     102     23
3     103     84
4     104     96
5     105     44

これらすべてのレコードが挿入されると、ランクが自動計算され、各レコードに対して挿入される必要があります。たとえば、ランク列は次のように入力されます。

ID    StudID  Marks  Rank
1     101     56     3
2     102     23     5
3     103     84     2
4     104     96     1
5     105     44     4

これに対してmysqlで単一のクエリを作成したいと思います。それは単一のクエリで実行されますか、それとも関数や手順が必要ですか? 上記のロジックのクエリ、関数、またはプロシージャをmysqlでどのように記述すればよいですか?

注: PHP を使用して上記のロジックを実装する必要があります。

4

2 に答える 2

0

学生が挿入クエリを再実行すると仮定すると、学生がマークを提出すると、クエリ挿入を実行します...これを試してください:

INSERT INTO <thetable> (ID, StudID, Marks, Rank)
VALUES (<theid>, <thestudentid>, <themark>, NULL)
ON DUPLICATE KEY UPDATE Rank = (SELECT COUNT(*)+1
                                  FROM <thetable>
                                 WHERE Rank IS NOT NULL);

別の仮定:列 "Rank" の初期値は NULLであるか、空の文字列の場合は条件Rank IS NOT NULLを次のように変更します。Rank = ''

于 2013-11-02T13:40:45.157 に答える