UNION 問い合わせ

UNION 構成は、似ていない可能性がある型を1つの結果の集合になるように 合わせなければならないという点で少し異なっています。

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 の型はその最初または最上位の句の型に合うように強制されます。

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

別のパーサの戦略として、その一団内の "最善" の型を選択するという方 法もできますが、これは、パーサでうまく再帰的な技術を使用することに なり、より難しいものになります。しかし、検索結果をテーブルに 格納 する時に "最善" の型が使用されています。

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)