2015-04-22 51 views
1

我有一個這樣的MySQL數據庫中的表。做與其他領域的最小值的數據聚合

Name Age code 
foo 24 23 
bar 23 21 
mit 19 23 

,我"code"屬性的基礎上,做數據彙總,供我使用"group by"在mysql中這樣

Select * from table group by code 

輸出

foo 24 23 
bar 23 21 

我只關心與最小年齡的彙總結果。

預期輸出是

mit 19 23 
bar 23 21 

我找了大多數優化查詢。

在此先感謝。請讓我知道你是否需要更多細節。

回答

0

您需要每個代碼具有最小年齡的行。這意味着代碼沒有更小的年齡。這裏有一個方法:

select t.* 
from table t 
where not exists (select 1 from t2 where t2.code = t.code and t2.age < t.age); 
0

你可以得到最小年齡使用

SELECT code, MIN(age) FROM table GROUP BY code 

每個代碼如果你想對應最小agecodename,那麼它總是存在意外不幸。這將工作:

SELECT code, age, name 
FROM table JOIN (SELECT code, MIN(age) age FROM table GROUP BY code) t  
USING (code, age) 

如果你提供的表上的指標有一些可以完成的優化。