我在我的表中有一些記錄。最大()在SQL查詢
我要選擇具有最大年齡
如果我寫了下面的查詢它的做工精細的記錄。
Select MAX(Age)
From Table
它工作正常。但如果我這樣寫,
Select FirstName, LastName, MAX(Age)
From Table
Group By FirstName, LastName
它不工作(顯示所有記錄)。我怎樣才能解決這個問題 ?
我在我的表中有一些記錄。最大()在SQL查詢
我要選擇具有最大年齡
如果我寫了下面的查詢它的做工精細的記錄。
Select MAX(Age)
From Table
它工作正常。但如果我這樣寫,
Select FirstName, LastName, MAX(Age)
From Table
Group By FirstName, LastName
它不工作(顯示所有記錄)。我怎樣才能解決這個問題 ?
您可以使用子查詢獲取最大值Age
,並比較外部查詢的年齡結果。
Select *
From TableName
WHERE Age = (SELECT MAX(Age) FROM TableName)
簡要說明,在查詢中使用GROUP BY
不正是你想要的,因爲它不是一個過濾運營商和只做組非集合列。例如,您有兩個記錄具有相同的名字和姓氏,但年齡不同,結果將是由於使用MAX()
而使用年齡最大的人。
不客氣':)' – 2013-04-08 06:03:34
由於使用max(Age)您將獲得單個記錄和FirstName,因此LastName有多個記錄。
您正在一起使用它,因此它會產生歧義。
Select FirstName, LastName from From Table where Age = (SELECT MAX(Age) FROM Table)
使用此查詢。
哇。它非常簡單。不要理解這個想法。謝謝你。 – 2013-04-08 06:00:57
@ 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
請注意,這樣做只能選擇一個記錄,而不是與最大年齡的所有記錄。
您的數據庫..? – 2013-04-08 05:59:38
*** SQL ***只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......很多東西都是特定於供應商的 - 所以我們真的需要知道什麼**數據庫系統**(和哪個版本),你正在使用.... – 2013-04-08 06:33:05
DB2 @ Sayed Ahmed – 2013-04-08 06:34:36