PrestoのINSERT文で、別のテーブルからSELECTした結果を挿入する書き方があります。
こういうの。
INSERT INTO
new_table (
col1,
col2,
col3
)
SELECT
col1,
col2,
col3
FROM
old_table
このとき、SELECT文がそこそこ複雑になると、以前の記事で紹介したWITH句を使いたくなるのですが、うまく動かず困っていました。
それはどうやら、 INSERT INTO より先に WITH句を書いてしまっていたのが原因のようです。
WITH は INSERT INTO と SELECT の間に 書くのが正解のようです。
例としてはこんな感じ。
INSERT INTO
new_table (
col1,
col2,
col3
)
WITH
tmp_table AS (
SELECT
col1,
col2,
col3
FROM
old_table
)
SELECT
col1,
col2,
col3
FROM
tmp_table