首页
学习
活动
专区
圈层
工具
发布

max()函数
EN

Stack Overflow用户
提问于 2011-03-04 20:42:12
回答 5查看 1.3K关注 0票数 0

我创建了下面的表。

代码语言:javascript
复制
create table man(id integer, name varchar(20), city varchar(20), age integer)

我想找出年龄最大的人的名字。

因此,我运行了以下查询,

代码语言:javascript
复制
select name, max(age) from man group by name;

它按年龄升序显示所有人的姓名。哪里出了问题?

EN

回答 5

Stack Overflow用户

发布于 2011-03-04 20:46:37

如果您想获取年龄较大的人,您可以这样做:

代码语言:javascript
复制
select name, age from man order by age desc limit 1;

对于使用SQL Server的查询:

代码语言:javascript
复制
select top 1 name, age from man order by age desc;

您的查询正在做其他事情。max使用group子句进行计算。因为你是按名字分组的,所以max(age)是同名的人的最大年龄。

票数 2
EN

Stack Overflow用户

发布于 2011-03-04 20:49:12

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

不管怎么说。如果您想要表man中的最大年龄,您需要运行:

代码语言:javascript
复制
select max(age) from man

现在你是谁?如果您将name添加到查询中,DB引擎将返回所有名称(因为您请求的是所有名称,而不是特定的名称;分组没有帮助,因为大多数名称已经有距离)。age列的值。

您需要的是一个子查询:

代码语言:javascript
复制
select m1.name
from man m1
where m1.age = (
    select max(m2.age)
    from man m2
)

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

票数 1
EN

Stack Overflow用户

发布于 2011-03-04 20:45:01

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5193844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档