Mysql 当存在类似行时,是否获取列值最大的行?

Mysql 当存在类似行时,是否获取列值最大的行?,mysql,Mysql,我正在开发一个向我的站点添加标签的系统,现在这是我的“标签”表: 我使用以下查询对每个站点的标记进行求和: 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

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

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

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 

我如何才能做到这一点?

尝试对结果使用自联接。有一些很好的例子。与嵌套大量查询相比,从第一个查询创建一个临时表,然后将其用于第二步(从每个组中获取最大“总和”)可能更容易(更快)。请参阅该页标题为“从每组中选择前N行”的部分。您的示例看起来不一致。对于
example1
,第二个结果集只有一行,第三个结果集有两行。
SUM(1)
按惯例写入
COUNT(*)
。您的标签表需要一个主键。有3个“幽默”、2个“博客”和1个“食物”记录这一事实的意义是什么?多说一次并不能使事情变得更真实。(URL、标记)的组合应该是唯一的。当然,这破坏了问题的其余部分,但最好从准确的基本原理开始,其中一个基本原理是表格不应该包含相同的行。乔纳森:有3个“幽默”,2个“博客”和1个“食物”,因为每个都是由不同的用户插入的。很抱歉,我应该指出表中有更多的列,例如UID。Mat:谢谢,我已经更正了它,我最终创建了一个新表。因为我不知道如何嵌套这个查询。
URL           | Tag     | Sum
example1.com     humor    3
example1.com     blog     2
example2.com     blog     1