1、删除数据
alter table [database]table delete where
eg:alter table db_test.t_test delete where statdate > 0;
attention: delete 后面一定要加 where 条件,可以随便写个条件就好了,这样子应该是为了防止全表删除
1.1.1、删除ReplicatedMergeTree
alter table db_test.t_test on cluster default_cluster delete where statdate = 2022101221;
更多的使用语法可参考官网:DELETE Statement | ClickHouse Docs
2、查询表数据是否被删除
ClickHouse 当执行delete 语法时并不是马山就删除数据的,这个具体的时间取决于数据量的大小,在没有被完全删除前查询依然会查询出来数据,那怎么判断数据是否被删除干净了呢?
查询system.mutations
eg:select * from system.mutations where database ='db_test' and table ='t_test' Format Vertical;
主要看is_done字段,当等于1时表示被删除了,经常一个表会有多个mutation文件,注意看一条记录只代表一个mutation文件
![](https://i-blog.csdnimg.cn/blog_migrate/8b98043d397ff035d5b0ab2fcf139f14.png)
3、新增字段并修改排序
ALTER TABLE db_dws.dws_test [ON CLUSTER cluster] ADD COLUMN IF NOT EXISTS med_type_platform_id Int32 DEFAULT 0 COMMENT '一级媒体ID' AFTER plat_name, MODIFY ORDER BY (statdate, media_id, game_id_o2, plat_id, agent_id, med_type_platform_id);
注意:分布式表好像并不能执行,目前还没有解决待解决了来修复这个问题