Объединить два запроса SELECT в PostgreSQL
Я хотел бы объединить два запроса выбора с UNION
,
Как я могу использовать результат с первого SELECT
во-вторых 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> )
1 ответ
Решение
Используйте 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 ALL
вместо UNION
, Не исключает дубликатов и работает быстрее.