> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 关于修改键表达式的文档

# ALTER TABLE ... MODIFY ORDER BY

```sql theme={null}
ALTER TABLE [db].name [ON CLUSTER cluster] MODIFY ORDER BY new_expression
```

该命令会将表的[排序键](/zh/reference/engines/table-engines/mergetree-family/mergetree)更改为 `new_expression` (一个表达式或表达式元组) 。主键保持不变。

该命令比较轻量，因为它只会更改元数据。为了保持数据分区片段中的行按照排序键表达式排序这一特性，你不能向排序键中添加包含现有列的表达式 (只能添加在同一 `ALTER` 查询中通过 `ADD COLUMN` 命令新增的列，且该列没有默认值) 。

出于同样的原因，对于 `new_expression` 中保留下来的排序键列，你也不能更改其排序方向 (`ASC` 或 `DESC`)：已有的 parts 在物理上仍按写入时该列所使用的方向排序，而普通的 data part 并不会记录该方向。若要使用不同的方向，请创建一个具有所需 `ORDER BY` 的新表，并使用 `INSERT ... SELECT` 将数据复制到其中。

<Note>
  它仅适用于 [`MergeTree`](/zh/reference/engines/table-engines/mergetree-family/mergetree) 家族中的表 (包括[复制表](/zh/reference/engines/table-engines/mergetree-family/replication)) 。
</Note>

**属于：** `ALTER`

**相关：** `ALTER`、`CREATE TABLE`、`ALTER TABLE ... MODIFY SAMPLE BY`
