3

我的表中有一些记录。

我想选择一条具有最大年龄的记录

如果我在下面写查询它工作正常。

Select MAX(Age)
From Table

它工作正常。但如果我这样写,

Select FirstName, LastName, MAX(Age)
From Table
Group By FirstName, LastName

它不工作(显示所有记录)。我怎样才能解决这个问题 ?

4

4 回答 4

4

您可以使用子查询来获取最大值Age并比较外部查询年龄的结果。

Select  *
From    TableName
WHERE   Age = (SELECT MAX(Age) FROM TableName)

简要说明,GROUP BY在您的查询中使用的并不完全符合您的要求,因为它不是过滤运算符并且只对非聚合列进行分组。例如,您有两个名字和姓氏相同但年龄不同的记录,结果将是年龄最大的人,因为使用MAX().

于 2013-04-08T05:59:16.327 回答
3

由于使用 max(Age) 您将获得单条记录,而 FirstName,LastName 有多条记录。

您正在一起使用它,因此它会产生歧义。

Select FirstName, LastName from From Table where Age = (SELECT MAX(Age) FROM Table)

使用此查询。

于 2013-04-08T05:59:59.253 回答
1

另一种方法是使用not exists

Select * from Table t1
where not exists (select 1 from Table where age > t1.age)
于 2013-04-08T06:02:36.937 回答
1

我会建议这种简单的方法:

select *
from table
order by age desc
fecth 1 rows only

请注意,这只会选择一条记录,而不是选择所有具有最长年龄的记录。

于 2013-04-08T06:57:15.117 回答