我有下表:
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做到这一点?
答案 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
语句不是一个很好的解决方案。您应该规范化数据库结构并将标记提取到单独的表中。