UNION 子句
你可以使用 UNION 并显式指定 UNION ALL 或 UNION DISTINCT。
如果不指定 ALL 或 DISTINCT,则取决于 union_default_mode 设置。 UNION ALL 和 UNION DISTINCT 的区别在于,UNION DISTINCT 将对联合结果执行去重操作,这等效于从包含 UNION ALL 的子查询中 SELECT DISTINCT。
你可以使用 UNION 通过扩展它们的结果来组合任意数量的 SELECT 查询。示例
结果列按其索引(在 SELECT 内部的顺序)匹配。如果列名不匹配,则最终结果的名称将从第一个查询中获取。
对于联合操作,将执行类型转换。例如,如果两个正在组合的查询在兼容类型中具有相同字段,且具有非 Nullable 和 Nullable 类型,则结果 UNION 具有 Nullable 类型字段。
UNION 的组成部分查询可以包含在圆括号中。 ORDER BY 和 LIMIT 应用于单独的查询,而不应用于最终结果。 如果需要将转换应用于最终结果,可以将包含 UNION 的所有查询放在 FROM 子句中的子查询中。
如果你使用 UNION 而没有显式指定 UNION ALL 或 UNION DISTINCT,可以使用 union_default_mode 设置指定联合模式。 设置值可以是 ALL、DISTINCT 或空字符串。 但是,如果你使用 UNION 和将 union_default_mode 设置为空字符串,则会抛出异常。 以下示例演示了不同值设置的查询结果。
查询
结果
查询
结果
UNION/UNION ALL/UNION DISTINCT 的组成部分查询可以同时运行,并且可以将它们的结果混合在一起。
参见