↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.0 / 6.5
历史版本。 PostgreSQL 7.0 已结束支持。 请参阅 当前版本手册.

6.5. UNION 查询

UNION 结构有些不同,它必须把可能不相似的类型匹配起来构成单一结果集。

UNION 求值

  1. 检查所有结果的类型是否一致。

  2. 把来自各 UNION 子句的每个结果强制转换成与第一个 SELECT 子句或目标列相同的类型。

6.5.1. 示例

6.5.1.1. 未充分指定的类型

tgl=> SELECT text 'a' AS "Text" UNION SELECT 'b';
 Text
------
 a
 b
(2 rows)

6.5.1.2. 简单 UNION

tgl=> SELECT 1.2 AS "Float8" UNION SELECT 1;
 Float8
--------
      1
    1.2
(2 rows)

6.5.1.3. 转置 UNION

union 的类型被强制匹配 union 中第一个/顶端子句的类型:

tgl=> SELECT 1 AS "All integers"
tgl-> UNION SELECT '2.2'::float4
tgl-> UNION SELECT 3.3;
 All integers
--------------
            1
            2
            3
(3 rows)

另一种解析器策略可以是选择这一组中的"最佳"类型,但由于解析器使用了精巧的递归技术,这更加困难。不过,在选择 into 表时会使用"最佳"类型:

tgl=> CREATE TABLE ff (f float);
CREATE
tgl=> INSERT INTO ff
tgl-> SELECT 1
tgl-> UNION SELECT '2.2'::float4
tgl-> UNION SELECT 3.3;
INSERT 0 3
tgl=> SELECT f AS "Floating point" from ff;
  Floating point
------------------
                1
 2.20000004768372
              3.3
(3 rows)

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.