从SQL db获取顶级标签

时间:2013-03-04 13:00:22

标签: php sql

我有下表:

id tag   imgID ts
1  funny   1   2013-03-03 09:56:56
1  boring  5   2013-03-03 09:56:56
1  cute    3   2013-03-03 09:56:56
1  funny   67   2013-03-03 09:56:56

用于图像标签。所以这是我能提出的最佳解决方案,所以当添加标签时,会在此表上添加一个新行。因此可能有许多行具有许多相同的标签。我想要做的是在主页上显示十大最常用的标签。因此,如果有很多有趣的标签,并且它是趋势,我希望它是第一。我怎么能用SQL做到这一点?

2 个答案:

答案 0 :(得分:2)

使用GROUP BY按标记对所有行进行分组,然后按照表格中的频率顺序列出。

SELECT tag
FROM theTable
GROUP BY tag
ORDER BY COUNT(*) DESC
LIMIT 10

答案 1 :(得分:0)

通过分组和计数:

SELECT    tag, COUNT(*) occurrences
FROM      yourtable
GROUP BY  tag
ORDER BY  occurrences DESC

对字符串列执行GROUP BY语句不是一个很好的解决方案。您应该规范化数据库结构并将标记提取到单独的表中。