ここではテーブル名を「movies_ranking」、カラムはそれぞれ次のようにしています。
カテゴリ:Category
映画タイトル名:title
ランキング:rank
日付:Date
SELECT t2.* , CONCAT( '+', t1.rank - t2.rank ) AS rankup
FROM `movies_ranking` AS t1
JOIN `movies_ranking` AS t2
WHERE t2.Category = t1.Category
AND t2.title = t1.title
AND t1.rank - t2.rank > 4
AND t2.Date = '2015-05-02'
AND DATE_SUB( '2015-05-02', INTERVAL 1 DAY ) = t1.Date
ORDER BY rankup DESC
LIMIT 20
(※ORDER BY句を追加編集済み「ORDER BY rankup DESC」
※WHERE句に結合テーブルデータを日付で限定する条件追加編集済み「AND t2.Date = '2015-05-02'」)
※急上昇の基準を5つ以上のランクアップにしていますが、3つ以上など別の基準にしたい場合は「 > 4」の数値を変更します。
※当日の日付の部分はPHPなどスクリプト側で変更してください。
【※ 追記 ※】
結合するテーブルデータの日付指定を自動で行う方法を追記します。
回答内SQLの日付指定条件の箇所を変更します。
AND t2.Date = '2015-05-02'
AND DATE_SUB( '2015-05-02', INTERVAL 1 DAY ) = t1.Date
上記を以下のようにすると、それぞれ現在の日時から8時間前と1日+8時間前の日付が自動指定されます。(※午前8時に当日のランキングデータを取得できる場合の例ですので、データ更新時間が前後する場合は時間指定の部分を変更してください。)
AND DATE( DATE_SUB( NOW(), INTERVAL 8 HOUR) ) = t2.Date
AND DATE( DATE_SUB( NOW(), INTERVAL '1 8' DAY_HOUR) ) = t1.Date
※当日午前0時すぐにデータ更新が完了している場合は、次の条件で大丈夫です。
AND CURDATE() = t2.Date
AND DATE_SUB( CURDATE(), INTERVAL 1 DAY) = t1.Date
※DATE_SUB()の使い方は以下のページを参照してください。
・日付および時間関数
http://dev.mysql.com/doc/refman/5.6/ja/date-and-time-functions.html#function_date-add