2013-04-06 5 views
9

두 개의 선택 쿼리를 UNION과 결합하고 싶습니다.
두 번째 SELECT에있는 첫 번째 SELECT의 결과를 어떻게 사용할 수 있습니까?PostgreSQL에서 두 개의 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 – Bwyss

+0

의 조건을 충족하는 table2의 모든 레코드를 가져 오려면 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합니다. 중복을 배제하지 않으며 이러한 방식으로 더 빠릅니다.

관련 문제