web-dev-qa-db-ja.com

PostgreSQLで2つのSELECTクエリを組み合わせる

2つの選択クエリをUNIONと組み合わせたいと思います。
最初のSELECTの結果を2番目のSELECTで使用するにはどうすればよいですか?

(SELECT carto_id_key FROM table1
    WHERE tag_id = 16)
UNION 
(SELECT * FROM table2
    WHERE carto_id_key = <the carto_id result from above> )
14
Bwyss

[〜#〜] cte [〜#〜] を使用して、サブクエリの結果を複数のSELECTで再利用します。
そのためには、PostgreSQL 8.4以降が必要です。

WITH x AS (SELECT carto_id_key FROM table1 WHERE tag_id = 16)

SELECT carto_id_key
FROM   x

UNION ALL
SELECT t2.some_other_id_key
FROM   x
JOIN   table2 t2 ON t2.carto_id_key = x.carto_id_key

あなたはおそらく欲しいでしょう UNION ALLUNIONの代わりに。重複を除外せず、この方法で高速になります。

18