为什么 Postgres 仅根据所选列选择不同的数据?

Why does Postgres choose different data solely based on columns selected?

我是 运行 两个不同的查询,每个查询在一个子查询中有两个联合:

所以结构是:

SELECT *
FROM (subquery_1
UNION SELECT subquery_2)

现在,如果我执行左侧的查询,我会得到以下结果:

但是右边的查询returns是这样的结果:

即使两个查询中的条件都没有改变,但结果有何不同,唯一的不同是子查询中选定的列之一?

这很违反直觉。

运算符 UNION 从 returned 结果集中删除重复行。

SELECT 语句中删除列可能会产生重复的行,如果删除的列存在,这些行将不存在。

尝试 UNION ALL,这将 return 在任何情况下联合查询的所有行。

查看简化版 demo.