显示所有分组结果并排序

ari*_*rik 2 mysql sorting group-by distinct

我有一张桌子,像那样:

| B | 1 |
| C | 2 |
| B | 2 |
| A | 2 |
| C | 3 |
| A | 2 |
Run Code Online (Sandbox Code Playgroud)

我想获取它,但排序和分组.也就是说,我希望它按字母分组,但按组的最高总和排序.另外,我想显示组内的所有条目:

| C | 3 |
| C | 2 |
| A | 2 |
| A | 2 |
| B | 2 |
| B | 1 |
Run Code Online (Sandbox Code Playgroud)

顺序就是这样,因为C有3和2. 3 + 2 = 5,对于A高于2 + 2 = 4,对于B高于2 + 1 = 3.

我需要显示所有"分组"字母,因为还有其他列是不同的,我需要显示所有列.

编辑:

感谢您的快速答复.但是,我有勇气进一步询问.

我有这个问题:

SELECT * FROM `ip_log` WHERE `IP` IN
(SELECT `IP` FROM `ip_log` GROUP BY `IP` HAVING COUNT(DISTINCT `uid`) > 1)
GROUP BY `uid` ORDER BY `IP`
Run Code Online (Sandbox Code Playgroud)

上面描述中的字母是ip(我需要它按IP地址分组),数字是timestamp(我需要它按总和排序(或仅用作排序参数)).我应该创建一个临时表,然后使用下面的解决方案吗?

Red*_*ter 8

select t.Letter, t.Value
from MyTable t
inner join (
    select Letter, sum(Value) as ValueSum
    from MyTable
    group by Letter
) ts on t.Letter = ts.Letter
order by ts.ValueSum desc, t.Letter, t.Value desc
Run Code Online (Sandbox Code Playgroud)

SQL小提琴示例