sql - 在 PostgreSQL 中组合两个 SELECT 查询

标签 sql postgresql union common-table-expression

我想用 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> )

最佳答案

使用 CTE在多个 SELECT 中重用子查询的结果。

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

SELECT carto_id_key
FROM   cte

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

你很可能想要 UNION ALL而不是 UNION。不排除重复项并且这种方式更快。<​​/p>

关于sql - 在 PostgreSQL 中组合两个 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15849423/

相关文章:

mysql - SQL 为每一行查找以前的值

mysql - 如何界定外键的可能值?

postgresql - 使用 Prisma 的嵌套创建查询返回未定义

MYSQL 如何仅从一个表中选择数据,其中该表中的列值与另一表中的列值匹配?

sql - 如何知道 MATERIALIZED VIEW 更新是否正在运行?

mysql - 使用 Hibernate native 查询插入不适用于 java.util.Date

sql - 如何将表添加到 postgreSQL 中的特定模式?

sql - 按小时间隔计数

MYSQL UNION 和/或 PIVOT

php - MYSQL联合展示