我创建了下面的表。
create table man(id integer, name varchar(20), city varchar(20), age integer)我想找出年龄最大的人的名字。
因此,我运行了以下查询,
select name, max(age) from man group by name;它按年龄升序显示所有人的姓名。哪里出了问题?
发布于 2011-03-04 20:46:37
如果您想获取年龄较大的人,您可以这样做:
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)是同名的人的最大年龄。
发布于 2011-03-04 20:49:12
我很难理解你在这里做什么。在你的模型中,一个人可以有多个年龄?
不管怎么说。如果您想要表man中的最大年龄,您需要运行:
select max(age) from man现在你是谁?如果您将name添加到查询中,DB引擎将返回所有名称(因为您请求的是所有名称,而不是特定的名称;分组没有帮助,因为大多数名称已经有距离)。age列的值。
您需要的是一个子查询:
select m1.name
from man m1
where m1.age = (
select max(m2.age)
from man m2
)这将选择年龄与集合中最高年龄相同的所有元素。
发布于 2011-03-04 20:45:01
对于每个名字,它将为您提供具有该名字的所有人的最大年龄。(这就是您要求的,不是吗?)
https://stackoverflow.com/questions/5193844
复制相似问题