一些虚拟数据:
id group_id name score
1 A Tom 20
2 B Jone 17
3 B Jack 19
4 C Tim 18
我希望按分数获得不同的group_id顺序。这是我的尝试:
select group_id from table order by score
出来了:
group_id
B
C
B
A
所以,我认为这将有效select distinct group_id from (select group_id from table order by score ) t
,但它出来了:
group_id
A
B
C
与select group_id from (select group_id from table order by score ) t group by group_id
相同。
然而,预期的结果是
group_id
B
C
A
我认为这应该很容易,只需要有人说明一点。
答案 0 :(得分:1)
我相信这就是你想要的:
select group_id
from table
group by group_id
order by min(score);
答案 1 :(得分:0)
我认为您需要使用SUM
功能来按分数对组进行排序,例如
SELECT group_id
FROM table
GROUP BY group_id
ORDER BY SUM(score) DESC;
如果您想按个别条目或聚合值排序,则可以将SUM
替换为任何其他聚合函数(例如MAX
,AVG
等)。 Here是MySQL的组/聚合函数的文档。
答案 2 :(得分:0)
所以,我认为这将有效
select distinct group_id from (select group_id from table order by score ) t
内部查询可以同化为表格。您的查询是select distinct group_id from t
,MySQL没有理由按分数或任何其他列对返回的行进行排序。
与
select group_id from (select group_id from table order by score ) t group by group_id
相同。
同样,没有请求MySQL订购行。 GROUP BY
不订购,无论如何它会产生不同的东西。你不需要它。
您需要的查询在您的问题中表达:
我希望按分数获得不同的group_id顺序。
放入SQL它就像:
一样简单SELECT DISTINCT group_by
FROM table
ORDER BY score