2017-02-28 9 views
0

私はこのようになりますテーブルを持っている:セレクトマックス()mariaDB

name price class 
a  10  x 
a  20  y 
a  15  z 
b  40  y 
b  35  z 
c  5  x 
c  10  y 
c  15  z 
c  12  w 

私は最高価格であるすべての名前を取得すると、それが属するクラスをWICHたいです。このような何か:私はこれを試してみました

name price class 
a  20  y 
b  40  y 
c  15  z 

SELECT name, max(price), class 
from t 
GROUP by name 

が、それは私に間違ったクラスをもたらします。私はこれを得る:

name price class 
a  20  x 
b  40  y 
c  15  x 

私は間違って何を言ってくれますか?

+0

あなたが特定の名前のために同じ最大値を持つ2つのクラスを持っている場合は、あなたの出力がために何をしたいですか? –

+0

@augustinatossi結果は正しいが、あなたはそれを誤解している。あなたは本当にその人の最大値を得ますが、あなたが探しているのは、価格がその名前の最大価格と等しい完全な行を与えてください。以下のRaduによって与えられた答えに示されているように。 –

+0

[_Groupwise Max_](https://mariadb.com/kb/en/mariadb/groupwise-max-in-mariadb/) –

答えて

0

これは、あなたが探しているものをあなたを与える必要があります。

SELECT T.* 
FROM T 
    INNER JOIN (SELECT Name, 
        MAX(price) maxPrice 
       FROM t 
       GROUP BY Name) tMax on T.Name = tMax.Name 
              AND T.Price = tMax.maxPrice