max()函数

时间:2011-03-04 12:42:12

标签: sql max

我创建了下表。

create table man(id integer, name varchar(20), city varchar(20), age integer)

我想找到年龄最大的人的姓名。

所以,我运行了以下查询,

select name, max(age) from man group by name;

以年龄的升序显示所有人的姓名。出了什么问题?

5 个答案:

答案 0 :(得分:2)

如果您想获得年龄较大的人,您可以:

select name, age from man order by age desc limit 1;

对于使用SQL Server的查询:

select top 1 name, age from man order by age desc;

您的查询正在执行其他操作。 max使用您的group子句进行计算。由于您按名称进行分组,max(age)是具有相同名称的人的最大年龄。

答案 1 :(得分:1)

我很难理解你在这里做了什么。一个人在你的模特中可以有多个年龄?

反正。如果您想要表man中的最大年龄,则需要运行:

select max(age) from man

现在是谁?如果你向查询添加name,数据库引擎将返回所有名称(因为你要求所有这些名称,而不是特定的名称;分组将无助于因为大多数名称已经令人不安)与最大值相结合。 age列的值。

您需要的是子查询:

select m1.name
from man m1
where m1.age = (
    select max(m2.age)
    from man m2
)

这将选择年龄与集合中最高年龄相同的所有元素。

答案 2 :(得分:0)

对于每个名称,它为您提供具有该名称的所有人的最大年龄。 (这就是你要求的,不是吗?)

答案 3 :(得分:0)

选择名称。最大(年龄)来自男人的名字;

应该是

SELECT name,max(age)FROM man GROUP BY name;

您也可以尝试

SELECT name,age FROM man ORDER BY age DESC

也许有关您期望的结果的更多信息会有所帮助吗?

答案 4 :(得分:0)

  SELECT NAME, AGE
    FROM MAN
GROUP BY NAME, AGE
  HAVING AGE = (SELECT MAX (AGE) FROM MAN)