【发布时间】:2012-08-09 21:32:08
【问题描述】:
我有一张桌子,就像那个:
| B | 1 |
| C | 2 |
| B | 2 |
| A | 2 |
| C | 3 |
| A | 2 |
我想获取它,但已排序和分组。也就是说,我希望它按字母分组,但按组的最高和排序。另外,我想显示组内的所有条目:
| C | 3 |
| C | 2 |
| A | 2 |
| A | 2 |
| B | 2 |
| B | 1 |
顺序是这样的,因为 C 有 3 和 2。3+2=5,高于 A 的 2+2=4,而 A 又高于 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`
上面描述中的字母是ip(我需要它按IP地址分组),数字是timestamp(我需要它按总和排序(或仅用作排序参数))。我应该创建一个临时表,然后使用下面的解决方案吗?
【问题讨论】:
-
您能否阐明您的回答后说明的“按总和排序”是什么意思?什么总和?
-
按单个组的时间戳值之和排序,就像字母按一组字母对应的数字之和排序。
-
如果列是时间戳,我不确定 SUM 聚合函数的行为,所以我不太了解
-
没关系,我已经设法通过将它保存到临时表中然后应用redfilter的方法来解决这个问题。
标签: mysql sorting group-by distinct