PostgreSQL
上一页 第六章. 类型转换 下一页

UNION (联合)查询

UNION 元素有些特别,因为它必须匹配一些也许不太类似的类型以生成一个唯一的结果集.

UNION 计算

  1. 检测标明的类型,获得所有结果.
  2. 使用UNION语句转换所有结果,使之与第一个 SELECT 语句或目标列匹配.

例子

待定类型

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

简单的 UNION

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

转换的 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)

上一页 首页 下一页
查询目标 开头 索引和键字