0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DB(MySQL)でランキング順に並べる

Posted at

DB(MySQL)でランキング順に並べる方法と注意点

はじめに

DBを勉強しておりアウトプットとして記事を書きます !
間違った表現をしてたら、ご指摘して頂けると嬉しいです。

ランキング順に並べる方法

  • RANK関数などを使わずに順位を取得する方法として、順位をつけるデータを一旦順位をつける順番(昇順または降順)にすべて取得して、それをFetchなどの方法で番号をつけていくという方法もありますが、ここではSQLのSELECTステートメントのみで取得する方法で実装する。
  • NG例
    DBに「rank」というようなカラムを追加しそこに直接、現在のランキングを挿入し
select * from (ソートするテーブル名) order by rank; 

のようなSQLでソートする。
この場合の問題点はランキングが変動したときに再度、直接rankカラムにランキングを挿入する手間がかかる。
現時点でのランキングを参照するだけの場合であれば問題ないかもしれないが、ランキングは常に更新され、いつ見ても最新のランキングを参照できるほうが良い。

  • GOOD例
    ランキングを相対的ではなく絶対的に管理する。
    rank」ではなく「sales」のような絶対数を入れるカラムにする。
    その「sales」の絶対数をソートする。
select * from (ソートするテーブル名) order by sales desc;

このように絶対的な情報でソートすると、ランキングに変動があっても対応できる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?