2012-01-05 33 views
1

我有問題與MySQL查詢。 我需要獲得最大額定值的完整行。 例如我有餐桌食譜分組,由於在MySQL中使用

rating | id |類

4.1 | 1 | soup 
4.2 | 3 | soup 
4.9 | 4 | soup 
4.8 | 5 | salads 
4.3 | 6 | dishes9 

SELECT MAX(rating) rat, id, class FROM recipes GROUP BY class 

而且我得到的結果:

鼠| id |類

4.9 | 1 | soup 
4.8 | 5 | salads 
4.3 | 6 | dishes 

所以在第一行(其中類=「湯」)我得到真實地最大等級 - 4.9,但在這行ID的值爲1,不是4

當我使用

SELECT MAX(rating) rat, id, class FROM recipes GROUP BY class HAVING rating=rat 

結果成爲

鼠| id |類

4.8 | 5 | salads 
4.3 | 6 | dishes 

任何人都可以幫我解決這個問題嗎?

+0

你想什麼來獲得,如果你有相同類的兩個ID與相同的最大額定值。例如,在您的fisrt列表中,如果您添加了行4.9 | 7 |湯,您是否希望返回4和7的行?或者只是隨機挑選一個? – Jaydee 2012-01-05 14:44:51

回答

0

一種方法是使用IN()子查詢找到MAX(rat)行中對應的id

SELECT * 
FROM recipes 
WHERE id IN (
    SELECT id FROM recipes GROUP BY class HAVING rat = MAX(rat) 
) 
0

嘗試此查詢 -

SELECT r1.* FROM recipes r1 
    JOIN (SELECT MAX(rating) rat, class FROM recipes GROUP BY class) r2 
    ON r1.class = r2.class AND r1.rating = r2.rat;