最大()在SQL查询

问题描述:

我在我的表中有一些记录。最大()在SQL查询

我要选择具有最大年龄

如果我写了下面的查询它的做工精细的记录。

Select MAX(Age) 
From Table 

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

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

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

+1

您的数据库..? – 2013-04-08 05:59:38

+0

*** SQL ***只是*结构化查询语言* - 许多数据库系统使用的语言,但不是数据库产品......很多东西都是特定于供应商的 - 所以我们真的需要知道什么**数据库系统**(和哪个版本),你正在使用.... – 2013-04-08 06:33:05

+0

DB2 @ Sayed Ahmed – 2013-04-08 06:34:36

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

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

简要说明,在查询中使用GROUP BY不正是你想要的,因为它不是一个过滤运营商和只做组非集合列。例如,您有两个记录具有相同的名字和姓氏,但年龄不同,结果将是由于使用MAX()而使用年龄最大的人。

+0

不客气':)' – 2013-04-08 06:03:34

由于使用max(Age)您将获得单个记录和FirstName,因此LastName有多个记录。

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

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

使用此查询。

+0

哇。它非常简单。不要理解这个想法。谢谢你。 – 2013-04-08 06:00:57

+0

@ R.Reddy随时欢迎。 – Freelancer 2013-04-08 06:01:54

另一种方法是使用not exists

Select * from Table t1 
where not exists (select 1 from Table where age > t1.age) 

我建议这个简单的方法:

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

请注意,这样做只能选择一个记录,而不是与最大年龄的所有记录。