一千萬個為什麽

搜索

使用MySQL在另一列中的每個唯一值中查找列的最高值

我正在嘗試編寫一個MySQL查詢(來自PHP),它將為組列中的每個唯一值找到最新(最高ID號)分數。

我嘗試了幾種不同的max()和GROUP BY組合,但無法使其工作。

這是我的表的一個例子:

ID | my_group | score

1 | red | good
2 | blue | bad
3 | red | bad
4 | blue | good
5 | red | good
6 | yellow | bad
7 | blue | good
8 | blue | bad
9 | yellow | good
10 | blue | bad

所以我想從上表返回的內容是:

ID | my_group | score

10 | blue | bad
9 | yellow | good
5 | red | good

最佳答案

select m.ID, m.my_group, m.score 
from (
    select my_group, max(ID) as MaxID
    from MyTable
    group by my_group
) mm
inner join MyTable m on mm.my_group = m.my_group
    and mm.MaxID = m.ID

轉載註明原文: 使用MySQL在另一列中的每個唯一值中查找列的最高值