mysqlからのランキングデータ取得に関して質問です。


現在、Aテーブルには以下のようにデータが入っています。

id value
1 A
2 B
3 B
4 C
5 D
6 C
7 C

上記では、「A:1個」「B:2個」「C:3個」「D:1個」となっているので、「valueの数が多い順に2つ」取得しようとすれば、CとBを取得できなければなりません。
また、できればValueの個数も同時に取得したいです。
すなわち「C(3個)」「B(2個)」と取得できれば最高です。

方法をご存知の方いらっしゃいましたら教えていただきたいです。
ちなみにmysqlは5.1を、phpは5.2を使用しております。

それでは、よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/16 15:02:12
  • 終了:2012/03/23 15:05:06

回答(2件)

id:eiji_hate No.1

eiji_hate回答回数7ベストアンサー獲得回数12012/03/16 15:29:19

ポイント100pt

実行確認しておりませんが、下記SQLで取得できると思います。
もし、エラーが出たり、結果が違っていたら、コメント下さい。


SELECT
value
, count(value) as count
FROM
Aテーブル
GROUP BY
id
ORDER BY
count DESC
LIMIT
2

id:a-kuma3 No.2

a-kuma3回答回数4443ベストアンサー獲得回数18252012/03/16 15:29:22

ポイント100pt

こんな感じ。

select value, count(value) as num from A group by value order by num desc limit 2

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません