便利な割に自分の周りで広まってないので、ここでメモしておく。
PostgreSQLの現場でかなり使用していた。(mysqlは8以降でないと使用できないらしい…)
基本構文
WITH table_name AS (query)
宣言した”table_name”で、クエリ内で一時ビューを作成することが出来る。
例:①
WITH tmp_hoge AS (SELECT * FROM hoge)
SELECT * FROM tmp_hoge;
例:②
WITH tmp_touhoku AS (SELECT pref_cd FROM pref WHERE region = 'touhoku')
SELECT * FROM user INNER JOIN tmp ON user.pref_cd = tmp_touhoku.pref_cd;
サブクエリを外だしすることができ、可読性の面で非常に強力。