MySQLで質問です。

ある会員でポイントの順位を付けているのですが
全会員の順位は付ける事が出来るのですが
特定の会員IDのみの順位を取得するには、どういったSQLを
発行すればいいでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/10/13 23:03:26
  • 終了:2009/10/20 23:05:02

回答(3件)

id:HALSPECIAL No.1

HALSPECIAL回答回数407ベストアンサー獲得回数862009/10/13 23:18:40

ポイント27pt

類似質問ですが、

こちらはいかがでしょうか?

question:1192783057

id:komamitsu No.2

komamitsu回答回数21ベストアンサー獲得回数22009/10/14 01:22:45

ポイント27pt

http://www.geocities.jp/mickindex/

mysql> SELECT * FROM test;
+------+-------+
| id   | point |
+------+-------+
|    1 |   500 | 
|    2 |  1500 | 
|    3 |   100 | 
|    4 |  1000 | 
|    5 |    80 | 
+------+-------+
5 rows in set (0.01 sec)

こんなテーブルのばあい id = 3 の順位が欲しければ

mysql> SELECT COUNT(*) AS rank, t1.id
    -> FROM test t1, test t2
    -> WHERE t1.point <= t2.point
    -> GROUP BY t1.id
    -> HAVING t1.id = 3
    -> ORDER BY rank;
+------+------+
| rank | id   |
+------+------+
|    4 |    3 | 
+------+------+
1 row in set (0.01 sec)

こんな感じ?

id:komamitsu No.3

komamitsu回答回数21ベストアンサー獲得回数22009/10/14 01:37:02

ポイント26pt

http://www.geocities.jp/mickindex/

あ、こっちのほうがスマートか. 連投失礼.

mysql> SELECT ( 
    ->   SELECT COUNT(t2.point)
    ->   FROM test t2
    ->   WHERE t2.point > t1.point
    -> ) + 1 AS rank, t1.id
    -> FROM test t1
    -> WHERE t1.id = 3;
+------+------+
| rank | id   |
+------+------+
|    4 |    3 | 
+------+------+
1 row in set (0.01 sec)

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

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

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

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

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