-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

画像のタグ用。これが私が思いついた最善の解決策だったので、タグが追加されるたびに、このテーブルに新しい行が追加されます。そのため、多くの同じタグを持つ行が多数存在する可能性があります。私がやりたいことは、トップ 10 の最も使用されたタグをホームページに表示することです。だから面白いのタグがたくさんあって、それが流行っていたら、それを1番にしたいです。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 に答える