メモ:MySQLの変数とrank関数もどき

定期的なデータ抽出などで使うクエリは、変数を使うと便利です。

SET @START = '2013-08-30 13:00:00',@END = '2013-09-09 13:00:00';
SELECT * FROM hogehoge WHERE create_time BETWEEN @START AND @END;

一番上の変数の日付を書き換えれば毎月使えますね。
なお、select文で変数に値をセットするときには、書き方が違うので注意です。
(MySQLユーザーなら常識かもしれませんが、SQLServerからの移行組は面食らいます)

SELECT @a:= name FROM hogehoge WHERE id = 123;
SELECT @a;

SQLServerやOracleにはrank関数があって、順番をつけるのに便利だったのですが、MySQLには存在しません。
そこで、変数を使って、こうやります。

SET @a = 0;
SELECT user_id,point,@a:=@a+1 AS rank FROM user_point ORDER BY point DESC;

これで、pointが高い順にランキングが表示されます。
ちょっと煩雑ですね。。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク