跳到主要内容
跳到主要内容

UNION 子句

您可以使用 UNION 明确指定 UNION ALLUNION DISTINCT

如果您未指定 ALLDISTINCT,结果将取决于 union_default_mode 设置。 UNION ALLUNION DISTINCT 之间的区别在于,UNION DISTINCT 会对联合结果进行去重变换,等效于对包含 UNION ALL 的子查询执行 SELECT DISTINCT

您可以使用 UNION 通过扩展其结果来结合任何数量的 SELECT 查询。示例:

结果列按其索引(在 SELECT 中的顺序)匹配。如果列名不匹配,最终结果的名称将来自第一个查询。

联合查询之间会执行类型转换。例如,如果两个合并的查询具有相同字段,并且这些字段具有兼容类型中的非 NullableNullable 类型,则 resulting UNION 将具有 Nullable 类型字段。

UNION 参与的查询可以用圆括号括起来。ORDER BYLIMIT 适用于单独的查询,而不是最终结果。如果您希望对最终结果应用转换,可以将所有带有 UNION 的查询放在 FROM 子句的子查询中。

如果您在不明确指定 UNION ALLUNION DISTINCT 的情况下使用 UNION,则可以使用 union_default_mode 设置指定合并模式。设置的值可以是 ALLDISTINCT 或空字符串。但是,如果您将 UNIONunion_default_mode 设置为空字符串一起使用,则会抛出异常。以下示例演示了具有不同设置值的查询结果。

查询:

结果:

查询:

结果:

UNION/UNION ALL/UNION DISTINCT 的参与查询可以同时运行,并且它们的结果可以混合在一起。

参见