1

列の最大値を見つけて、見つかった最大値で行を 1 ずつ更新する必要があるというシナリオがあります。このようにできますか?

update student SET stud_rank=MAX(stud_rank)+1 where stud_id=6
4

4 に答える 4

2
update student set
    stud_rank = (select max(stud_rank) from student) + 1
where stud_id=6
于 2013-08-07T06:30:11.923 に答える
1

これを試してみてください -

UPDATE student
SET stud_rank = (SELECT MAX(stud_rank) + 1 FROM student)
WHERE stud_id = 6
于 2013-08-07T06:30:58.540 に答える
0

MAX値が必要な場合stud_id = 6は、このようにすることができます

update student 
SET stud_rank=MAX(MaxRank)+1 
FROM student s 
INNER JOIN (
    SELECT MAX(stud_rank) AS MaxRank, stud_id
    FROM  students
) topRank ON s.stud_id = topRank.stud_id 
WHERE s.stud_id=6
于 2013-08-07T06:33:18.147 に答える
0

上記のクエリを実行すると、sqlserver で以下のエラーが発生します:-

集計は、UPDATE ステートメントのセット リストに表示されない場合があります。

クエリを次のように変更する必要があります:-

update student SET stud_rank=(select MAX(stud_rank)+1 from student) where stud_id=6
于 2013-08-07T06:34:31.913 に答える