从另一列的每个唯一值中为列中的每个唯一值查找最高值使用MySQL
问题描述:
我正在尝试编写一个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
答
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
答
不能说这是保证工作,但这个简单的技术在我做的有限测试中工作。基本上,我只是通过ID对表格进行反向排序,然后选择和分组。
SELECT ID, my_group, score
FROM (
SELECT * FROM my_table ORDER BY ID DESC
) AS table
GROUP BY my_group
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
我刚试过。它完美的作品。谢谢 – Mark 2010-09-24 20:39:31
我的意思是我尝试了@RedFilter答案。有效。 – Mark 2010-09-24 20:42:10