Doris 唯一模型,只能根据首个字段(主键位)删除数据。并且条件值要写死具体值。。有时为了满足需求,不得不把表做出复制模型。
但是,一定要删除唯一模型的数据还是办法的。
假设 table_emp 是一张唯一模型表。删除代码如下:
create table temp_tt like table_emp ;
insert into temp_tt select * from table_emp ;
truncate table table_emp ;
-- not() 里面添加删除条件
insert into table_emp select * from temp_tt where not( 删除条件 ) ;
drop table temp_tt ;
解释:
- 创建临时表。temp_tt (临时表),结构和table_emp(原表)一样
- 复制数据到临时表中
- 清空原表
- 根据自由条件查询临时表数据(过滤掉了满足删除条件的数据),插入到原表中
- 删除临时表
这种方式也避免了【 DELETE-LOAD-DELETE-LOAD 交替执行的使用模式,这种模式对底层的数据合并策略非常不友好,可能会导致大量的数据未合并,导致积压】的问题。