2013-04-06 24 views
9

2つの選択クエリをUNIONと組み合わせたいと思います。
SELECTの最初の結果を2番目のSELECTに使用するにはどうすればよいですか?PostgreSQLで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>) 
+0

実際に何を達成したいのですか?これは単純なJOINまたは副問合せ(必要な詳細を取得したい場合)、または両方の問合せの列が一致しない場合があります。 – Akash

+0

最初のSELECTの条件を満たすtable2のすべてのレコードを取得したい – Bwyss

+0

これが唯一の要件の場合は、http://www.postgresql.org/docs/8.3/static/tutorial-join.htmlを参照してください。 – Akash

答えて

9

つ以上のSELECTのサブクエリからの結果を再利用するCTEを使用してください。
は、あなたはそのための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 ALLの代わりUNIONたい。重複を除外せず、このように高速です。

関連する問題