在查找表中的最大年龄时,SQL Server中出现Gettin错误

MET*_*EAD 4 sql sql-server

我们可以通过使用来尝试获得最大年龄

SELECT TOP 1 age FROM Head1 ORDER BY Age DESC
Run Code Online (Sandbox Code Playgroud)

但我尝试在SQL Server中使用while循环

declare @a int, @m int, @maxo int;
set @maxo = 0;
while(@a<10)
begin
    select name, @m = age from head1 where ID = @a;
    if @m>@maxo
       @maxo = @m;
    set @a=@a+1;
end
print @maxo
Run Code Online (Sandbox Code Playgroud)

错误

消息141,级别15,状态1,行5
为变量赋值的SELECT语句不能与数据检索操作组合.

消息102,级别15,状态1,行7
'@maxo'附近的语法不正确.

我有点被困在这里.请帮帮人......

Rah*_*thi 5

有两个问题:

问题1:

您获得的错误是自解释的,即,在将值分配给变量时,您无法选择列.

你可以像这样解决它:

select @name = name, @m = age from head1 where ID = @a;
Run Code Online (Sandbox Code Playgroud)

问题2:

在这里我不认为你需要该查询来从你的表中找到最大年龄.你可以简单地使用max()函数从你的表中找到这样的最大年龄

SELECT Name, Age FROM Head1 WHERE Age = (SELECT MAX(Age) FROM Head1)
Run Code Online (Sandbox Code Playgroud)

使用循环是低效的,如果你的表很大,它将产生性能瓶颈.