mysqlで検索結果のカラム値を変数にキャッシュする
> SELECT @min_user_id := `id` FROM users ORDER BY id DESC LIMIT 1000;
これで @min_user_id
に検索結果がキャッシュされる。
select @cache1 = case when ...end, -- int @cache2 = case when ...end, -- int @cache1 * @cache2 as calc from hoge
キャッシュした値でもって計算したいときに便利っぽい。 これがないとサブクエリで倒さないといけなかったのでちょっとだけ便利かも。
以下みたいな冗長なクエリじゃなくなる。
select cache1 * cache2 as calc from (select case when ...end as cache1, -- int case when ...end as cache2, -- int from hoge) as tmp