2012-01-05 3 views
1

私はmysqlクエリに問題があります。 私は最大値の評価で完全な行を取得する必要があります。 たとえばテーブルがありますレシピグループ別、MySQLで使用中

評価| 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 

(ここで、クラス=「スープ」)私はtrully最大の評価を得る - 4.9が、この行IDに4

私が持っを使用し、値1、いないを持っています

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

結果は

ラットになります| id |クラス

4.8 | 5 | salads 
4.3 | 6 | dishes 

誰でもこの問題を解決できますか?

+0

何あなたが同じ最大定格と同じクラスの2つのIDを持っている場合は取得したいと思います。たとえば、あなたのリストに、行4.9 | 7 |スープを追加すると、4と7の両方の行が返されますか?ランダムに選んだのは誰ですか? – Jaydee

答えて

0

IN()サブクエリを使用して、対応するidの行がMAX(rat)であることがわかります。

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; 
関連する問題