-1

我有下表:

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 做到这一点?

4

2 回答 2

2

用于GROUP BY按标签对所有行进行分组,然后在表格中按频率顺序列出它们。

SELECT tag
FROM theTable
GROUP BY tag
ORDER BY COUNT(*) DESC
LIMIT 10
于 2013-03-04T13:02:57.053 回答
0

通过分组和计数:

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

然而,在字符串列上执行GROUP BY语句并不是一个很好的解决方案。您应该标准化您的数据库结构并将标签提取到单独的表中。

于 2013-03-04T13:02:50.447 回答