こちらの記事から
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_WITH_clause.html
WITH句とは
サブクエリでテーブルを定義するもの
- SELECTより先に評価される
- 各サブクエリは、ビュー定義に似ている一時テーブルを定義する
- 一時テーブルはFROM句内で参照可能
構文
WITH テーブル名 AS (サブクエリ)
使用可能なSQLステートメント
- SELECT (SELECT ステートメント内のサブクエリを含む)
- SELECT INTO
- CREATE TABLE AS
- CREATE VIEW
- DECLARE
- EXPLAIN
- INSERT INTO...SELECT
- PREPARE
- (WHERE 句サブクエリ内の) UPDATE
例
WITH tmp_table AS (SELECT * FROM exist_table)
SELECT * FROM tmp_table;
ポイント
- 固有の目的に合わせたテーブル構造のデータから更にデータを抽出したい時などに使える
- 抽出した結果を別テーブルとして作成したい時などに使える
- WITH句のサブクエリ内で、別のWITH句を指定することはできない
参考URL
雑感
MySQLは8から使える