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

如果您执行上述查询,您将在 sqlserver 中得到以下错误:-

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

您必须将查询更改为:-

update student SET stud_rank=(select MAX(stud_rank)+1 from student) where stud_id=6
于 2013-08-07T06:34:31.913 回答
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 回答