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

时间:2010-09-24 20:25:46

标签: php 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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

不能说这可以保证有效,但这种简单的技术在我所做的有限测试中起作用。基本上,我只是按ID对表进行反向排序,然后选择和分组。

SELECT ID, my_group, score 
FROM (
    SELECT * FROM my_table ORDER BY ID DESC
) AS table
GROUP BY my_group