2013-04-08 99 views
3

我在我的表中有一些記錄。最大()在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

回答

4

您可以使用子查詢獲取最大值Age,並比較外部查詢的年齡結果。

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

簡要說明,在查詢中使用GROUP BY不正是你想要的,因爲它不是一個過濾運營商和只做組非集合列。例如,您有兩個記錄具有相同的名字和姓氏,但年齡不同,結果將是由於使用MAX()而使用年齡最大的人。

+0

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

3

由於使用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

1

另一種方法是使用not exists

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

我建議這個簡單的方法:

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

請注意,這樣做只能選擇一個記錄,而不是與最大年齡的所有記錄。