2010-09-24 103 views
1

我正在尝试编写一个MySQL查询(来自PHP),它将查找组中每个唯一值的最新(最高ID号)分数柱。从另一列的每个唯一值中为列中的每个唯一值查找最高值使用MySQL

我试过几个不同的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 

回答

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 
+0

sombody可以试试吗?现在没有获得sql的帮助。 SELECT m.ID,m.my_group,m.score FROM MyTable m JOIN MyTable mm ON m.my_group = mm.my_group WHERE m.id> = mm.id – iddqd 2010-09-24 20:38:12

+0

我刚试过。它完美的作品。谢谢 – Mark 2010-09-24 20:39:31

+0

我的意思是我尝试了@RedFilter答案。有效。 – Mark 2010-09-24 20:42:10

0

不能说这是保证工作,但这个简单的技术在我做的有限测试中工作。基本上,我只是通过ID对表格进行反向排序,然后选择和分组。

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