当有相似的行时,获取具有最大列值的行?

时间:2011-10-04 06:18:49

标签: mysql

我正在开发一个系统来为我的网站添加标签,现在这是我的“标签”表:

URL           | Tag     | UID
example1.com    humor     123
example1.com    humor     342
example1.com    humor     234
example1.com    blog      123
example1.com    blog      432
example1.com    food      221
example2.com    blog      432

我正在使用以下查询对每个网站的标记进行求和:

SELECT *, COUNT(*) as SUM
FROM History
GROUP BY URL, UID

所以我得到了:

URL           | Tag     | Sum
example1.com     humor    3
example1.com     blog     2
example1.com     food     1
example2.com     blog     1 

最后(这是我不知道该怎么做)我只需要为每个分组的URL只获得最大总和的2行,所以我知道该网站的实际主题是什么:

URL           | Tag     | Sum
example1.com     humor    3
example1.com     blog     2
example2.com     blog     1 

我该怎么做?

1 个答案:

答案 0 :(得分:2)

尝试在结果中使用自我加入。 This article有一些很好的例子。可能更容易(也更快)从第一个查询创建临时表,然后将其用于第二步(从每个组中获取最大“总和”),而不是嵌套多个查询。请参阅标题为“从每个组中选择前N行”的页面部分。