2017-02-28 37 views
0

的选择MAX()我有一个表,看起来像这样:每个值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 

我想每一个这是最高价,并至极它属于类名。是这样的:

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

你想要什么你的输出,如果你有一个有特定名称相同的最大值两个班? –

+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