PostgreSQL TEMPORARY TABLEの実用例 (Glue SQL)
TableAとTableBでそれぞれデータが入っており、
TableA id=1 と TableB id=4
TableA id=2 と TableB id=5
TableA id=3 と TableB id=6
・
・
・
のデータをそれぞれ結合して集計したい
みたいなわがまま仕様に対応する時のSQL
イメージとしては
TableA <JOIN> tempテーブル <JOIN> TableB
みたいな感じ
-- テンポラリテーブルを作成
-- 対応表としてのデータを入れる
CREATE TEMPORARY TABLE hoge As SELECT
*
FROM
(VALUES
(1, 4),
(2, 5),
(3, 6)
) AS t (id, cid);
-- 同一トランザクション内なら、テンポラリテーブルにインサートも可能
INSERT INTO hoge values (100,200);
-- TMPテーブルを後付のHBTMテーブルみたいに使えます
SELECT
*
FROM
-- テーブルA
tableA
LEFT OUTER JOIN
-- Temporaryテーブル
hoge
ON (hoge.id = users.id)
LEFT OUTER JOIN
-- テーブルB
tableB
ON (hoge.id = tableB.id)
ORDER BY
hoge.id;