1

次のコードを使用して、特定の release_id がテーブルに表示される回数のリストを生成しています

したがって、 release_id はテーブルに複数回表示される可能性があります。

SELECT release_id, COUNT( release_id ) 
FROM charts_extended
GROUP BY release_id
ORDER BY COUNT( release_id ) DESC 
LIMIT 0 , 30

出力例

release_id COUNT(release_id)
1231287 76
177617 73
12218 67

たとえば、1231287 は表に 76 回表示されます

release_id が表示されるランクの番号を出力するにはどうすればよいですか

例えば

1231287 = #1 12218 = #3

「release_id 1231287 が最も人気です」「12218 が 2 番目に人気があります」

4

3 に答える 3

3

rownum シミュレーションを使用します。このリンクを参照してください。良い記事のようです。 http://craftycodeblog.com/2010/09/13/rownum-simulation-with-mysql/

またはこれ。

開始値としてrownumを選択することによるMySQL制限選択

于 2012-04-13T04:17:05.050 に答える
2

これを試してください:

select release_id, cnt, @row := @row + 1 rank from (
  select release_id, count(release_id) cnt
  from releases
  group by release_id
  order by cnt desc
  limit 30
) final, (select @row := 0) init

ここでフィドル。

派生テーブルを使用する必要があります。そうしないと、順序が乱れます。

于 2012-04-13T04:24:27.783 に答える
1

@Steve は MySQL でこれを達成するための良い答えを持っているようです。私の2セント… アプリケーションにもよると思いますが、私は通常、ビジネスロジックでこのような処理を処理します。行を解析するときに、行番号を追加するだけです。その一部はパフォーマンスの問題になりますが、私にとっては、通常はコードをクリーンで保守しやすい状態に保つことです。

あなたの に基づいてLIMIT 0,30、一度に30個しか表示したくないと思いますか? 上位 30 件以上を表示したい場合は、ビジネス ロジックのどこかにこれを維持する方が確実に簡単であることがわかると思います。PHP で「ページング」を行う例を次に示します

于 2012-04-13T04:21:51.530 に答える