Skip to main content
自 25.6 版本起可用此表引擎在 OSS 和 Cloud 中自 25.6 版本起可用。
此引擎继承自 MergeTree。关键区别在于 parts 的合并方式:对于 CoalescingMergeTree 表,ClickHouse 会将具有相同主键的所有行 (更准确地说,具有相同排序键的所有行) 合并为一行,该行包含每一列最新的非 NULL 值。 这使得列级 upsert 成为可能,也就是说,你可以只更新特定列,而不必更新整行。 CoalescingMergeTree 适用于非键列中的 Nullable 类型。如果这些列不是 Nullable,则其行为与 ReplacingMergeTree 相同。

创建表

有关请求参数的描述,请参见请求描述

CoalescingMergeTree 参数

columns - 可选。一个 Tuple,包含要合并其值的列名。给定的列不能位于分区或排序键中。如果未指定 columns,ClickHouse 会合并所有不在排序键中的列的值。

查询子句

创建 CoalescingMergeTree 表时,需要使用与创建 MergeTree 表相同的子句

使用示例

以下表为例:
向其中插入数据:
结果如下所示:
为获得正确的最终结果,建议使用以下查询:
使用 FINAL 修饰符会强制 ClickHouse 在查询时应用合并逻辑,确保你能为每一列获取正确、合并后的”最新”值。这是在从 CoalescingMergeTree 表中查询时最安全、最准确的方法。
如果底层 parts 尚未完全合并,使用 GROUP BY 的方法可能会返回不正确的结果。
最后修改于 2026年6月10日