我正在尝试编写一个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
答案 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