Sql 是否可以获取列的最大值并使用单个查询进行更新?

Sql 是否可以获取列的最大值并使用单个查询进行更新?,sql,sql-update,max,Sql,Sql Update,Max,我有一个场景,我需要找到列的最大值,然后用找到的最大值逐行更新。可以这样做吗 update student SET stud_rank=MAX(stud_rank)+1 where stud_id=6 试试这个- UPDATE student SET stud_rank = (SELECT MAX(stud_rank) + 1 FROM student) WHERE stud_id = 6 如果需要螺柱id=6的最大值,可以这样做 update student SET stud_rank=

我有一个场景,我需要找到列的最大值,然后用找到的最大值逐行更新。可以这样做吗

update student SET stud_rank=MAX(stud_rank)+1 where stud_id=6
试试这个-

UPDATE student
SET stud_rank = (SELECT MAX(stud_rank) + 1 FROM student)
WHERE stud_id = 6

如果需要
螺柱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

如果执行上述查询,sqlserver中将出现以下错误:-

聚合不能出现在UPDATE语句的集合列表中

您必须将查询更改为:-

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

因此,
stud\u id
等于6的所有行都应该等于之前的最大值+1?@Damien\u异教徒是的,应该是
update student SET stud_rank=(select MAX(stud_rank)+1 from student) where stud_id=6