为什么sql中的max函数返回多个值

时间:2013-05-08 07:25:10

标签: sql-server sql-server-2005

我想展示薪水最高的球员。

select  max(Salary) as highest_salary, p.[Last name]
from tbl_PlayersTable as p, tbl_team as t
where p.Team = t.TeamID
and TeamID = 1000
Group by p.[Last name]

输出结果为:

highest_salary  Last Name
   8000          Bosh
   7000          Wade
   6000          James

我只想表现出来(因为他是薪水最高的球员,所以有8000名波什)。

5 个答案:

答案 0 :(得分:5)

您不需要MAX也不需要GROUP BY,只需将TOP 1ORDER BY Salary DESC一起使用即可。像这样:

select TOP (1) Salary as highest_salary, p.[Last name]
from tbl_PlayersTable as p, tbl_team as t
where p.Team = t.TeamID
 and TeamID = 1000
ORDER BY Salary  DESC

答案 1 :(得分:1)

您正在对值进行分组(请参阅最后的分组依据),因此您的最大函数计算每组的最大值。如果您想要绝对最大值,请删除分组。

答案 2 :(得分:1)

无需group by甚至max

select  top 1 Salary
,       [Last name]
from    tbl_PlayersTable
where   TeamID = 1000
order by
        salary desc

答案 3 :(得分:0)

因为您使用了group by p.[Last name],所以对于找到的每个不同的max(Salary),查询都会获得Last name。因此,如果您希望获得所有max(Salary)的{​​{1}}基础,则必须删除Last name

答案 4 :(得分:0)

您需要获得前1个值

  select TOP (1) Salary as maxsalary, p.[Last name]
   from tbl_PlayersTable as p 
   Inner join  tbl_team as t on  p.Team = t.TeamID
  where TeamID = 1000
  ORDER BY Salary  DESC